我必须每天加载一次增量加载到我的基表(比如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(基表)并重新加载整个数据)
Hive允许在主键和唯一键上重复。在将数据加载到Hive表之前,应该有一个上游作业进行数据清理。如果数据量少,可以编写python脚本;如果数据量大,可以使用spark。