2013-09-06 4 views
4

하이브 테이블을 날짜별로 분할했습니다. 마지막 'n'일 (또는 사용자 지정 파티션 목록)의 파티션을 선택적으로 덮어 쓸 수 있기를 원합니다.하이브 : 여러 파티션 덮어 쓰기 삽입

각 파티션에 대해 "INSERT OVERWRITE DIRECTORY"문을 쓰지 않고 할 수 있습니까?

도움을 주시면 대단히 감사하겠습니다.

답변

14

하이브는 동적 파티셔닝을 지원하므로 파티션이 원본 필드 중 하나 인 쿼리를 작성할 수 있습니다.

INSERT OVERWRITE TABLE dst partition (dt) 
SELECT col0, col1, ... coln, dt from src where ... 

where 절은 덮어 쓸 dt의 값을 지정할 수 있습니다.

그냥의 DT 필드가 이미 기본적으로 등

소스 또는 SELECT *,my_udf(dt) as dt의 일부인 경우 소스에서 목록에, 당신도 SELECT *, dt을 할 수있는 마지막 (이 경우에는 dt를) 파티션 필드를 포함 Hive는 지정된 파티션 중 적어도 하나가 정적이되기를 원하지만, 이 아닐 수 있도록 허용합니다.; 위의 쿼리를 실행하기 전에 다음을 설정할 수 있습니다.

set hive.exec.dynamic.partition.mode=nonstrict; 
+0

감사합니다. 깔끔한 정보 조각 – ShikharDua

관련 문제