2014-10-10 3 views
6
다음으로 하이브 테이블에 파티션을 생성하려고

: 다음과 같은 출력을 생성SemanticException 추가 partiton 하이브 테이블

> 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 열이 존재하며 string 유형 인 것은 문제가되지 않습니다.

이 파티션을 추가하기 위해 쿼리를 수행해야합니까?

답변

5

솔루션 STOCK_TICKER 테이블의 정의에 파티션 정보를 추가하는 것입니다 :

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

GL :

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

그리고 쉽게 의해 테이블에 외부 데이터를 추가 할 수 있습니다!

+0

외부 테이블에서 분할을 수행해야합니다. – eddyoc

+0

아니요,이 파티션의 기존 위치를 지정하여 관리하기 쉬운 테이블로 만들면 삭제시 원본 데이터가 위태롭게 될 수 있습니다. – www

+0

내 내부 테이블의 위치를 ​​가리키는 외부 테이블에서 파티션 작업이 성공하면이를 수행한다는 의미입니다. 내부 테이블에서의 파티셔닝은 그 자체로 가능하지 않습니다. – eddyoc