Hive-索引

Hive 索引

Lefty Leverenz创建,最后修改于六月17,2018

从3.0开始删除索引

还有一些替代选项可能与索引相似:

  • 具有自动重写的物化视图可以产生非常相似的结果。 Hive 2.3.0 添加了对实体视图的支持。
  • 使用列式存储文件格式(ParquetORC) – 它们可以进行选择性扫描;他们甚至可能会跳过整个文件/块。

索引已 在3.0版(HIVE-18448)中删除

Hive索引概述

Hive索引的目标是提高对表的某些列的查询查找的速度。如果没有索引,则使用判断式(例如“ WHERE tab1.col1 = 10”)的查询会加载整个表或分区并处理所有行。但是,如果存在col1的索引,则只需要加载和处理文件的一部分。

索引可以提供的查询速度的提高是以创建索引的额外处理和存储索引的磁盘空间为代价的。

版本号
在0.7.0版中添加了Hive索引,在0.8.0版中添加了位图索引。

索引资源

可以在以下位置找到有关如何使用Hive索引的文档和示例:

Hive索引的配置参数

配置属性文件描述参数配置Hive索引。

简单的例子

本节提供一些改编自Hive测试套件的索引示例。

区分大小写

在Hive 0.12.0和更早版本中,对于CREATE INDEX和DROP INDEX语句,索引名称区分大小写。但是,ALTER INDEX需要使用小写字母创建的索引名称(请参阅 HIVE-2752)。 通过使所有HiveQL语句的索引名称不区分大小写,此错误已在Hive 0.13.0中修复 。对于0.13.0之前的版本,最佳实践是对所有索引名称使用小写字母。

创建/构建,显示和删除索引:

CREATE INDEX table01_index ON TABLE table01 (column2) AS 'COMPACT';
SHOW INDEX ON table01;
DROP INDEX table01_index ON table01;

先创建再构建,显示格式化的(带有列名)并删除索引:

CREATE INDEX table02_index ON TABLE table02 (column3) AS 'COMPACT' WITH DEFERRED REBUILD;
ALTER INDEX table02_index ON table2 REBUILD;
SHOW FORMATTED INDEX ON table02;
DROP INDEX table02_index ON table02;

创建位图索引,生成,显示和删除:

CREATE INDEX table03_index ON TABLE table03 (column4) AS 'BITMAP' WITH DEFERRED REBUILD;
ALTER INDEX table03_index ON table03 REBUILD;
SHOW FORMATTED INDEX ON table03;
DROP INDEX table03_index ON table03;

在新表中创建索引:

CREATE INDEX table04_index ON TABLE table04 (column5) AS 'COMPACT' WITH DEFERRED REBUILD IN TABLE table04_index_table;

创建存储为RCFile的索引:

CREATE INDEX table05_index ON TABLE table05 (column6) AS 'COMPACT' STORED AS RCFILE; 

创建存储为文本文件的索引:

CREATE INDEX table06_index ON TABLE table06 (column7) AS 'COMPACT' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE;

创建具有索引属性的索引:

CREATE INDEX table07_index ON TABLE table07 (column8) AS 'COMPACT' IDXPROPERTIES ("prop1"="value1", "prop2"="value2");

使用表属性创建索引:

CREATE INDEX table08_index ON TABLE table08 (column9) AS 'COMPACT' TBLPROPERTIES ("prop3"="value3", "prop4"="value4");

删除索引(如果存在):

DROP INDEX IF EXISTS table09_index ON table09;

在分区上重建索引:

ALTER INDEX table10_index ON table10 PARTITION (columnX='valueQ', columnY='valueR') REBUILD;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 Hive从0.7.0版本开始加入了索引,目的是提高Hive表指定列的查询速度。没有索引的时候,Hive在执行...
    风筝flying阅读 13,871评论 0 6
  • Hive是一个构建在Hadoop上的数据仓库框架,是一个通用的、可伸缩的数据处理平台,它设计的目的是让精通SQL技...
    lizb阅读 19,242评论 0 8
  • Zookeeper用于集群主备切换。 YARN让集群具备更好的扩展性。 Spark没有存储能力。 Spark的Ma...
    Yobhel阅读 12,063评论 0 34
  • hive.ddl.output.format:hive的ddl语句的输出格式,默认是text,纯文本,还有json...
    博弈史密斯阅读 5,982评论 0 6
  • 我從香格里拉回來了 想開始在部落格上說說這趟旅行的故事 就想到了這個畫面 那天 和太太在香格里拉下午四點多 睡了一...
    3000烦恼风阅读 1,618评论 0 0