2014-10-10 1 views
6

Попытки создать раздел на столе улья со следующим:SemanticException добавления partiton Hive стол

> alter table stock_ticker add if not exists 
> partition(stock_symbol='ASP') 
> location 'data/stock_ticker_sample/stock_symbol=ASP/' 

Который производит следующий вывод

FAILED : SemanticException table is not partitioned but partition spec exists: {stock_symbol=ASP} 

Там нет разделов на этой таблице до этого попытка добавления

> show partitions stock_ticker; 

, который приводит к

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. 
Table stock_ticker_sample is not a partitioned table 

Нет сомнений, что столбец stock_symbol существует и имеет строку типа.

Вопрос: какие шаги необходимо предпринять, чтобы добавить этот раздел?

ответ

5

решение было бы добавить информацию о разделе в определение stock_ticker таблицы:

CREATE EXTERNAL TABLE stock_ticker (
... 
) 
PARTITIONED BY (stock_symbol STRING); 

Тогда легко можно добавить внешние данные в таблицу с помощью:

> alter table stock_ticker add if not exists 
> partition(stock_symbol='ASP') 
> location 'data/stock_ticker_sample/stock_symbol=ASP/' 

GL!

+0

Казалось бы, разделение должно выполняться на внешних таблицах. – eddyoc

+0

Нет, я предположил, что вы хотите указать существующее место для этого раздела, поэтому его управляемая таблица может угрожать исходным данным в случае падения. – www

+0

Я имею в виду, что при выполнении на внешней таблице, указывающей на расположение моей внутренней таблицы, что операция раздела успешно завершена. Не то, чтобы разбиение на внутренние таблицы само по себе невозможно. – eddyoc

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