我必须每天将增量加载加载到我的基表(比如table_stg)。我每天都会以xml格式从各种来源获取数据快照。 id
列应该是唯一的,但由于数据来自不同的来源,因此可能存在重复数据。
DAY1:
table_stg
id,col2,col3,ts,col4
1,a,b,2016-06-24 01:12:27.000532,c
2,e,f,2016-06-24 01:12:27.000532,k
3,a,c,2016-06-24 01:12:27.000532,l
day2 :(说xml被解析并加载到table_inter中,如下所示)
id,col2,col3,ts,col4
4,a,b,2016-06-25 01:12:27.000417,l
2,e,f,2016-06-25 01:12:27.000417,k
5,w,c,2016-06-25 01:12:27.000417,f
5,w,c,2016-06-25 01:12:27.000417,f
当我把这个数据放在table_stg中时,我的最终输出应该是:
id,col2,col3,ts,col4
1,a,b,2016-06-24 01:12:27.000532,c
2,e,f,2016-06-24 01:12:27.000532,k
3,a,c,2016-06-24 01:12:27.000532,l
4,a,b,2016-06-25 01:12:27.000417,l
5,w,c,2016-06-25 01:12:27.000417,f
处理这类情况的最佳方法是什么(不删除table_stg(基表)并重新加载整个数据)
答案 0 :(得分:0)
Hive确实允许主键和唯一键重复。在将数据加载到Hive表之前,您应该有一个上游工作来进行数据清理。 如果数据较少,您可以编写一个python脚本;如果数据巨大,则可以使用spark。
spark提供了dropDuplicates()方法来实现此目的。