Hive查询不使用索引

时间:2015-01-20 13:24:37

标签: hadoop hive

我正在分析在hive表上使用索引的影响。我创建了一个包含5列(COL1COL2COL3COL4COL5)的表格,并在其中加载了100000行。我还在这张桌子上创建了一个关于COL1的索引。

我在select *上使用WHERE子句运行COL1,这是一个索引列。

与在运行索引之前运行相同查询的情况相比,我发现查询运行时没有任何改进。

我在我的选择查询上做了一个EXPLAIN,它显示了TableScan而不是IndexScan,我无法弄清楚为什么它没有使用索引。

请帮忙。

1 个答案:

答案 0 :(得分:2)

您可以查看thisthis,但基本上如下:

  1. 创建索引

    CREATE INDEX .. ON TABLE ...

  2. 构建索引

    ALTER INDEX .. ON .. REBUILD;

  3. 使用索引

    INSERT OVERWRITE DIRECTORY' / tmp / indexes /..&# 39; 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 ...;

  4. 希望有所帮助