Hive索引错误

时间:2013-08-01 05:16:53

标签: hive hiveql

我在Hive(0.9.0)表中的多个列上构建索引时遇到问题。

describe nas_comps;
OK
leg_id  int
ds_name string
dep_date        string
crr_code        string
flight_no       string
orgn    string
dstn    string
physical_cap    int
adjusted_cap    int
closed_cap      int
comp_code       string

这有效:

CREATE INDEX nas_comps_legid ON TABLE nas_comps (leg_id) AS 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' WITH DEFERRED REBUILD;

但这并不是:

    CREATE INDEX nas_comps_legid_compcode ON TABLE nas_comps (leg_id,comp_code) AS 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' WITH DEFERRED REBUILD;

FAILED: Error in metadata: java.lang.RuntimeException: Check the index columns, they should appear in the table being indexed.
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

我猜索引只能识别第一列,因为即使失败了:

CREATE INDEX nas_comps_compcode ON TABLE nas_comps (comp_code) AS 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' WITH DEFERRED REBUILD;

FAILED: Error in metadata: java.lang.RuntimeException: Check the index columns, they should appear in the table being indexed.
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

我检查了this问题,但我不认为这是原因。

2 个答案:

答案 0 :(得分:1)

Think Hive不支持对分区列进行索引..请检查comp代码是否为分区列。

就多列索引而言,它应该有效..

答案 1 :(得分:0)

CREATE INDEX nas_comps_legid ON TABLE nas_comps(leg_id)AS'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler'with DEFERRED REBUILD;

CREATE INDEX nas_comps_legid ON TABLE nas_comps(leg_id)AS'compact'with DEFERRED REBUILD;

是的,这是有效的