2017-03-21 1 views
0

하이브 테이블의 특정 레코드를 덮어 쓰는 방법은 무엇입니까?
예 :
100 개의 레코드가있는 테이블 t1이 있습니다. 이제 그 100 개의 레코드 중 30 개만 덮어 써야합니다.하이브 테이블의 레코드 업데이트

어떻게 할 수 있습니까?

답변

0

하이브는 하이브 -0.14의 ACID 속성을 지원합니다. Hive 트랜잭션을 사용하면 기존 레코드를 업데이트하거나 삭제할 수 있습니다.

업데이트 및 삭제 작업을 수행 할 때 따라야 할 규칙은 거의 없습니다. 자세한 내용과 구현을 위해 to this blog을 하이브 트랜잭션에서 참조 할 수 있습니다.

+0

기본적으로, 나는이 두 테이블을 병합은. 두 테이블의 ID가 일치하면 첫 번째 테이블의 레코드를 두 번째 테이블의 레코드로 덮어 써야합니다. 두 번째 테이블의 레코드가 첫 번째 테이블에 삽입됩니다. – Parameshwar

0

내 평판은 직접 코멘트에 답변을 너무 낮게, 그러나 여기 달성하는 방법 :

INSERT OVERWRITE TABLE table_a 
SELECT * FROM table_a a WHERE a.id NOT IN (SELECT id FROM table_b) 
UNION ALL 
SELECT * FROM table_b; 
+0

'NOT IN'은이 경우'NOT EXISTS'와 같은 방식으로 동작합니까? [documentation] (https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-HingTablesfromqueries)는 특별히 NOT EXISTS를 사용한다고 말합니다. – Andrew

관련 문제