码迷,mamicode.com
首页 > 其他好文 > 详细

Hive对表建立索引

时间:2019-03-23 16:18:23      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:form   exists   size   mat   目的   生成   文件   col   term   

1.首先创建表

create table user(

  id int,

  name string,

  address string

)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY ‘,‘

STORED AS TEXTFILE;

2.创建索引

create index user_index on table user(id)

as ‘org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler‘ 

with deferred rebuild 

idxproperties(‘creator‘ = ‘Alex‘,‘create_at‘ = ‘sometimes‘) 

in table user_index_table; -- 生成user_index_table一张额外的表,该表里面 包括索引字段,以及该值所对应的HDFS文件路径,和该值在文件中的偏移量。

alter index user_index on user rebuild;

这样就对user表加了索引了,索引字段为id。

3.删除索引

drop index [if exists] user_index  on user;

4.加载索引数据

alter index  user_index on user [partition dt] rebuild;

5.查询索引

show index on user;

6.使用索引的目的

在执行索引字段查询的时候,首先生成一个额外的MR Job,根据对索引列的过滤条件,从索引表中过滤出索引列的值对应的HDFS文件路径以及偏移量,输出带hdfs一个文件中,然后根据这些文件的hdfs路径和偏移量筛选原始的input文件生成新的split,作为这个job的split,这样就可以不用全表扫描。使得查询效率更高,速度更快。

7.使用索引的缺点

需要生成索引表,然后每次执行查询要先跑个mr获取所要的字段的信息从索引表中,会有一定的开销。

Hive对表建立索引

标签:form   exists   size   mat   目的   生成   文件   col   term   

原文地址:https://www.cnblogs.com/lyr999736/p/10584065.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!