2013-08-01 2 views
0

Я столкнулся с проблемами при построении индекса на нескольких столбцах в таблице 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 вопрос, но я не думаю, что это причина.

ответ

1

Подумайте улей не поддерживает индексацию секционированных колонок .. пожалуйста, проверьте, если комп код разделенная колонка ..

Что касается индексации по нескольким столбцам, она должна работать ..

+0

Есть у уверены, что «Улей не поддерживает индексацию на секционированных столбцах. Да, comp_code - это секционированный столбец, и раньше у меня было подобное подозрение, но нет в документации, это уведомление существует. –

+1

Из книги _Programming Hive, O'Reilly_ на странице 118, кажется, что вы можете индексировать на секционированные столбцы. Версия Hive, используемая в этой книге, - v0.9.0 – user2265478

+0

Я считаю, что эта проблема присутствовала и в версии 0.10. То, что вы не можете индексировать на секционированные столбцы управляемых таблиц! –

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 в таблице nas_comps (leg_id), как 'компактные' с отложенным REBUILD;

Да, это работает

+0

Похоже, что вы, возможно, пропустили проблему, описанную пользователем. –

Смежные вопросы