Я столкнулся с проблемами при построении индекса на нескольких столбцах в таблице 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 вопрос, но я не думаю, что это причина.
Есть у уверены, что «Улей не поддерживает индексацию на секционированных столбцах. Да, comp_code - это секционированный столбец, и раньше у меня было подобное подозрение, но нет в документации, это уведомление существует. –
Из книги _Programming Hive, O'Reilly_ на странице 118, кажется, что вы можете индексировать на секционированные столбцы. Версия Hive, используемая в этой книге, - v0.9.0 – user2265478
Я считаю, что эта проблема присутствовала и в версии 0.10. То, что вы не можете индексировать на секционированные столбцы управляемых таблиц! –