Hive 查询不使用索引
Posted
技术标签:
【中文标题】Hive 查询不使用索引【英文标题】:Hive query not using index 【发布时间】:2015-01-20 13:24:36 【问题描述】:我正在分析对 hive 表使用索引的影响。我创建了一个包含 5 列的表(COL1
,COL2
,COL3
,COL4
,COL5
)并在其中加载了 100000 行。我还在这张表的 COL1 上创建了一个索引。
我在COL1
上运行select *
和WHERE
子句,这是一个索引列。
与创建索引之前运行相同查询相比,我发现查询运行时间没有任何改进。
我对我的选择查询进行了解释,它显示 TableScan 而不是 IndexScan,我无法弄清楚为什么它没有使用索引。
请帮忙。
【问题讨论】:
【参考方案1】:您可以查看this和this,但基本上如下;
创建索引
创建索引..在表上...
建立索引
ALTER INDEX .. ON .. REBUILD;
使用索引
INSERT OVERWRITE DIRECTORY '/tmp/indexes/..' SELECT _bucketname
, _offsets
FROM default__t_..__...
SET hive.index.compact.file=/tmp/indexes/x;
SET hive.input.format=org.apache.hadoop.hive.ql.index.compact.HiveCompactIndexInputFormat;
SELECT ... from ... where ... group by ...;
希望对你有帮助
【讨论】:
以上是关于Hive 查询不使用索引的主要内容,如果未能解决你的问题,请参考以下文章