HIVE 中重复数据的补救措施
remedy for duplicate data in HIVE
下面是我的数据流
假设 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 中将数据从 table B 移动到 table A 时,我在 HIVE 中使用 "insert" 命令和 "APPEND" 选项。所以,很明显,现在 table A 将有重复数据。
如何去掉这些重复数据?有办法吗?如果是,它们是什么?如果不是,那么行业标准是什么?
是的,您可以为此使用分段 table。我创建了两个额外的 tables.
DBMS_old:对于我想保留在最终 table 但在新结果中不存在的旧数据。
DBMS_new:对于我想在最后追加的新数据table。
第 1 步:使用左外连接获取暂存 table 中的所有旧数据,这会将所有旧数据放入 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;
第二步:使用union all追加旧数据和新数据。
insert overwrite table DBMS
select * from
(select * from DBMS_old
union all
select * from DBMS_new) temp;
希望对您有所帮助。
下面是我的数据流
假设 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 中将数据从 table B 移动到 table A 时,我在 HIVE 中使用 "insert" 命令和 "APPEND" 选项。所以,很明显,现在 table A 将有重复数据。
如何去掉这些重复数据?有办法吗?如果是,它们是什么?如果不是,那么行业标准是什么?
是的,您可以为此使用分段 table。我创建了两个额外的 tables.
DBMS_old:对于我想保留在最终 table 但在新结果中不存在的旧数据。 DBMS_new:对于我想在最后追加的新数据table。
第 1 步:使用左外连接获取暂存 table 中的所有旧数据,这会将所有旧数据放入 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;
第二步:使用union all追加旧数据和新数据。
insert overwrite table DBMS
select * from
(select * from DBMS_old
union all
select * from DBMS_new) temp;
希望对您有所帮助。