2014-05-20 2 views
2

4 년간의 데이터가 있습니다. 마찬가지로하나의 스크립트를 사용하여 여러 달 동안 하이브 파티션 만들기

'2011 
2012 
2013 
2014' 

나는 한 달의 데이터를 기반으로 쿼리를 실행해야합니다. 그래서 나는 아래와 같이 파티션을 만들고있다.

'ALTER TABLE table1_2010Jan ADD PARTITION(year='2010', month='01', day='01') 
LOCATION 'path'; 
ALTER TABLE table1_2010Jan ADD PARTITION(year='2010', month='01', day='02') 
LOCATION 'path'; 
ALTER TABLE table1_2010Jan ADD PARTITION(year='2010', month='01', day='03') 
LOCATION 'path';' 

나는 매월 매일 같은 개별 파티션을 만듭니다.

우리는 스크립트 (모든 언어)를 작성하여 매년 한 달에 한 번씩이 파티션을 만들 수 있는지 알고 싶습니다. 또는 하이브 자체에서이 작업을 수행 할 수있는 방법이 있습니까?

아무 제안 사항이 없습니다 ..

+0

왜 파티션을 만들어야합니까? 데이터 삽입을 위해 동적 파티션을 사용하여 항상 삽입 할 수 있으며, 동적 파티션을 사용하면 언제든지 삽입 할 수 있습니다. 여기를보십시오 : https://cwiki.apache.org/confluence/display/Hive/DynamicPartitions – dimamah

+0

데이터를 이미 입수했습니다. 먼저 외부 테이블을 만들었습니다. 이제 나는 매일 파티션을 만들고 파티션을 데이터 위치로 지정하려고합니다. – dheee

답변

1

외부 테이블의 경우 하이브가 수행 할 수 없습니다. shell/perl 스크립트를 만들어 루프를 사용하여 동일한 작업을 수행 할 수 있습니다.

하이브 관리 테이블의 경우 MSCK REPAIR 명령을 사용하여 쉽게 수행 할 수 있습니다. 당신이 데이터가로드되었는지 확인해야

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-RecoverPartitions%28MSCKREPAIRTABLE%29

만 것은 올바른 파티션입니다.

관련 문제