Hive索引使用

IndexDev

范围

目前只支持单表索引。本文档目前包含索引的创建和维护。

索引创建

CREATE INDEX index_name 
ON TABLE base_table_name (col_name, ...)
AS 'index.handler.class.name'
[WITH DEFERRED REBUILD]
[IDXPROPERTIES (property_name=property_value, ...)]
[IN TABLE index_table_name]
[PARTITIONED BY (col_name, ...)]
[
   [ ROW FORMAT ...] STORED AS ...
   | STORED BY ...
]
[LOCATION hdfs_path]
[TBLPROPERTIES (...)]
[COMMENT "index comment"]

元数据模型

支持索引的元数据模型见下图所示:

http://issues.apache.org/jira/secure/attachment/12449601/idx2.png

元数据模型中的新表IDXS 包含每一个索引的入口。它和TBLS 表的2个关系如下:

#ORIG_TBL_ID是包含索引数据的基础表ID的强制外键引用

#IDX_TBL_ID是索引表示表ID的可选的外键引用。它是可选的是因为不是所有的索引实现需要表作存储。对于需要表存储的索引,隐含创建的表的TBL_TYPE会被设置为 INDEX_TABLE.

对于如下的DDL:

CREATE TABLE t(i int, j int);
CREATE INDEX x ON TABLE t(j) 
AS 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler';

元数据中的TBLS表会有2个入口:

#一个为基础表t

#一个是索引表,自动命名为default+t_x+

IDXS表中x的入口中,ORIG_TBL_ID会引用到x的TBL_ID,并且IDX_TBL_ID会引用到default+t_x+的TBL_ID.


为了防止自动生成的索引表名,一个用户指定的表名例如t_x可以被提供,如下所示:

CREATE INDEX x ON TABLE t(j) 
AS 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler'
IN TABLE t_x;

REBUILD

ALTER INDEX index_name ON table_name [PARTITION (...)] REBUILD

DROP INDEX

DROP INDEX index_name ON table_name

更多可见:https://cwiki.apache.org/confluence/display/Hive/IndexDev


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值