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 查询不使用索引的主要内容,如果未能解决你的问题,请参考以下文章

HIVE—索引分区和分桶的区别

Hive(大数据)- 分桶和索引之间的区别

Hive索引

Hive入门Hive优化

Hive创建索引

hive和mysql都是行数据库