补救HIVE中的重复数据

时间:2017-12-21 15:54:10

标签: sql-server hadoop hive sqoop

以下是我的数据流

说RDBMS有10条记录

step -1
RDBMS --> SQOOP --> HIVE(e.g. table A (initial load))

step -2
RDBMS(modified record {record 2}) --> SQOOP(incremental)--> HDFS --> temp HIVE tbl(table B) --> HIVE(table A)

在将步骤2中的数据从表B移动到表A时,我在HIVE中使用“插入”命令并使用“APPEND”选项。因此,显然,现在表A将具有重复数据。

如何摆脱这些重复数据?有办法吗?如果是的话,他们是什么?如果不是,那么行业标准是什么?

1 个答案:

答案 0 :(得分:1)

是的,您可以使用临时表。我创建了两个额外的表。

DBMS_old:对于我想要保留在最终表中但在新结果中不存在的旧数据。 DBMS_new:对于我想要在最终表中附加的新数据。

步骤1:使用左外连接获取登台表中的所有旧数据,这将把所有旧数据都输入dbms_old。

insert overwrite table DBMS_old
select final.* from DBMS_results final
left outer join DBMS_new new
on final.primary_key = new.primary_key and final.col2 = new.col2
where new.primary_key is null;

步骤2:使用union all附加旧数据和新数据。

insert overwrite table DBMS
select * from 
(select * from DBMS_old
union all
select * from DBMS_new) temp;

希望它有所帮助。