如何处理Hive中类似主键检查的情况



我必须每天加载一次增量加载到我的基表(比如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。

spark提供了dropduplicate()方法来实现这一点。

最新更新