복붙노트

[HADOOP] 다른 하이브 테이블에서 하나 개의 하이브 테이블을 새로 고침

HADOOP

다른 하이브 테이블에서 하나 개의 하이브 테이블을 새로 고침

난 내가 매 시간마다 Sqoop을에게 증분 수입을 사용하고이를 준비 RDBMS에서 데려하고 몇 하이브 테이블을 가지고있다. 나는이 테이블을 조인하고 새로운 차원 테이블을 만드는 오전. 내가 하이브 스테이징 테이블에 RDBMS에서 새 행에 가져올 때마다, 나는 차원 테이블을 새로해야합니다. 새로운 행이없는 경우, 희미한 테이블의 새로 고침을 수행 할 수 없습니다. 내가 사용 하이브 버전은 ACID 기능이 없습니다.

이것은 하이브에서 얻을 수있는 방법에 대한 몇 가지 조언이 필요합니다.

해결법

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

    1.당신은 다른 데이터베이스와 같은 기존 하이브 테이블에 새로운 데이터를 삽입 할 수 있습니다. 그리고 하이브는 또한 WHERE 절이 존재합니다 지원합니다.

    당신은 다른 데이터베이스와 같은 기존 하이브 테이블에 새로운 데이터를 삽입 할 수 있습니다. 그리고 하이브는 또한 WHERE 절이 존재합니다 지원합니다.

    INSERT INTO TABLE MyDim
    SELECT Id, Blah1, Blah2
    FROM MySource s
    WHERE NOT EXISTS
     (SELECT 1 FROM MyDim z WHERE z.Id =s.Id)
    

    그러나 캐치가있다 : 각 INSERT 새로운 HDFS 파일을 생성합니다, 참여 제로 레코드가있는 경우에도. 너무 많은 분열은 시간이 지남에 따라 성능이 저하됩니다.

    주간 "압축"작업이 도움이 될 것입니다 (예를 들어, 이름이 테이블에서 INSERT의 덮어 쓰기를 테이블을 다시 작성 조각난 테이블의 이름을 바꿀 이름을 드롭)

  2. from https://stackoverflow.com/questions/32004374/refresh-one-hive-table-from-another-hive-table by cc-by-sa and MIT license