//Hive-1.2.1000.2.6.1.0-129 OVERWRITE test5 테이블을 여러 개 문서 (https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML)에 따라 INSERT OVERWRITE는 테이블이나 파티션의 기존 데이터를 덮어 씁니다. 그러나 INSERT OVERWRITE 쿼리가 실행 된 후에도 일부 오래된 데이터가 계속 나타납니다. 아래는 샘플 실행 및 출력입니다.Spark SQL (HiveContext를 통한 하이브 쿼리) 하이브 테이블에 여러 파티션이있는 경우 INSERT OVERWRITE가 기존 데이터를 덮어 쓰지 않습니다.
//Spark-2.1.1 불꽃-2.1.1
CREATE TABLE dbtest.test5 (emp_id INT) PARTITIONED BY (depart_id INT,depart_name STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION 'externalpath';
INSERT INTO TABLE dbtest.test5 PARTITION (depart_id,depart_name) SELECT emp_id,depart_id,depart_name from dbtest.tempTableHive1;
4 123 Dev
5 123 Dev
6 123 Test
7 567 Test
INSERT INTO TABLE dbtest.test5 PARTITION (depart_id,depart_name) SELECT emp_id,depart_id,depart_name from dbtest.tempTableHive2;
4 123 Dev
5 123 Dev
1 123 Dev
2 123 Dev
6 123 Test
3 123 Test
7 567 Test
INSERT OVERWRITE TABLE dbtest.test5 PARTITION (depart_id,depart_name) SELECT emp_id,depart_id,depart_name from dbtest.tempTableHive3;
8 123 Dev
9 123 Dev
10 123 Dev
6 123 Test
3 123 Test
7 567 Test
에 HiveContext를 통해 실행했을 때 우리는 코드에 어떤 잘못이 있습니까 밖으로 같은 넣어지고 또는 아파치 하이브의 문제인가?