- 1、机制和原理
- 2、优缺点
- 2.1、优点
- 2.2、缺点
- 3、索引 *** 作
- 3.1、创建索引
- 2、查看索引
- 3、删除索引
- 4、加载索引数据
- 5、使用索引
Hive的索引其实是一张索引表(Hive的物理表),在表里面存储索引列的值,该值对应的HDFS的文件路径,该值在数据文件中的偏移量。
当Hive通过索引列执行查询时,首先通过一个MR Job去查询索引表,根据索引列的过滤条件,查询出该索引列值对应的HDFS文件目录及偏移量,并且把这些数据输出到HDFS的一个文件中,然后再根据这个文件中去筛选原文件,作为查询Job的输入。
2、优缺点 2.1、优点- 可以避免全表扫描和资源浪费
- 可以加快含有group by的语句的查询速度
- 使用过程繁琐
- 需用额外Job扫描索引表
- 不会自动刷新,如果表有数据变动,索引表需要手动刷新
create index index_name on table table_name(column_name) as 'org.apache.hadoop.hive.ql.index.compact.compactindexhandler' with deferred rebuild in table index_table_name;
参数解释:
'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler':创建索引需要的实现类 index_name:索引名称 table_name:表名 column_name:索引列名 index_table_name:创建索引后生成的索引表名2、查看索引
show index on table_name;3、删除索引
drop index if exists index_name on table_name;4、加载索引数据
alter index index_name on table_name rebuild;5、使用索引
set hive.input.format=org.apache.hadoop.hive.ql.io.hiveinputformat; set hive.optimize.index.filter=true; set hive.optimize.index.filter.compact.minsize=0;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)