복붙노트

[HADOOP] 하이브 테이블에 덮어 쓰기 파티션을 삽입 - 값은 복제하기

HADOOP

하이브 테이블에 덮어 쓰기 파티션을 삽입 - 값은 복제하기

나는 비 파티션 테이블 내가 분할 하이브 테이블에 데이터를 삽입 선택 쿼리를 사용하여 하이브 테이블을 만들었습니다.

참조 사이트

이것은 내 샘플 직원 데이터 세트입니다 : 링크 1

나는 다음과 같은 쿼리를 시도 : 링크 2

그러나 하이브 테이블에 값을 업데이트 한 후,

50000에 직원 ID (19)와 스티븐의 급여를 업데이트.

값이 중복 얻고있다.

7       Nirmal  Tech    12000   A
7       Nirmal  Tech    12000   B

NIRMAL는 부서 단지에 배치되어 있지만 부서 B에 중복

나는 아무 잘못을하고 있습니까?

제안하십시오.

해결법

  1. ==============================

    1.당신이 당신의 마지막 INSERT 덮어 쓰기에 WHERE 절을 잊어 버린 것 같다 :

    당신이 당신의 마지막 INSERT 덮어 쓰기에 WHERE 절을 잊어 버린 것 같다 :

    INSERT INTO TABLE Unm_Parti_Trail PARTITION (Department = 'A') 
    SELECT employeeid,firstname,designation, CASE WHEN employeeid=19 
    THEN 50000 ELSE salary END AS salary FROM Unm_Parti_Trail 
    WHERE department = 'A';
    
  2. ==============================

    2.한 가지 가능한 솔루션입니다.

    한 가지 가능한 솔루션입니다.

    당신은 삽입을 할 때 쿼리의 마지막 것과 같은 파티션 필드를 선택하는 것이 필요하다. 예 :

    INSERT INTO TABLE Unm_Parti_Trail PARTITION(department='A') 
    SELECT EmployeeID, FirstName,Designation,Salary, Department 
    FROM Unm_Dup_Parti_Trail
    WHERE department='A';
    

    추가 정보를 원하시면이 링크를 참조하십시오.

  3. from https://stackoverflow.com/questions/26902998/insert-overwrite-partition-in-hive-table-values-getting-duplicated by cc-by-sa and MIT license