2017-11-23 8 views
1

HDFS 파일에서 하이브 테이블로 데이터를로드하는 일괄 처리 작업을 개발 중입니다.INSERT OVERWRITE의 SELECT 쿼리가 결과를 반환하지 않으면 Hive 테이블을 덮어 쓰지 못하도록하는 방법이 있습니까

  1. INSERT 특정 변환을 적용 외부 하이브 테이블 최종 하이브 테이블을 덮어 외부 하이브 테이블을 이용 HDFS에서 수신 된 파일을 읽어
  2. 아카이브에 수신 된 파일을 이동 다음 데이터의 흐름은 외부 테이블에 대한 입력 디렉토리에있는 파일이 어떤 파일이없는 경우 1. , 외부 테이블이 비어 단계에서 읽기 및 2 단계의 뜻을 실행 한 결과에있을 경우

이 흐름은 잘 작동 피나를 비우다 난 테이블. 외부 테이블이 비어 있으면 최종 테이블 (이전 실행 중에로드 된 데이터)에 기존 데이터를 유지하려고합니다.

일부 데이터로 덮어 쓰는 경우에만 최종 테이블을 덮어 쓸 수 있도록 설정할 수있는 하이브 속성이 있습니까?

입력 파일이 HDFS 명령을 사용하고 있으며 조건부로 하이브 요청을 실행했는지 확인할 수 있다는 것을 알고 있습니다.

set hive.exec.dynamic.partition=true; 
set hive.exec.dynamic.partition.mode=nonstrict; 

INSERT OVERWRITE TABLE your_table PARTITION(LOAD_TAG) 
select 
     col1, 
     ... 
     colN, 
     'dummy_value' as LOAD_TAG 
    from source_table; 

: 나는, 내가 테이블에 더미 파티션을 추가하려면이 추가 검증을

답변

1

시도를 방지 할 직접 하이브에서 같은 동작을 달성 LOAD_TAG 말과 동적 파티션로드를 사용할 수 있다면 궁금 귀하의 경우 파티션 값은 항상 동일해야합니다.