如何在Hive中处理主键检查?

时间:2016-06-27 15:21:33

标签: hadoop 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(基表)并重新加载整个数据)

1 个答案:

答案 0 :(得分:0)

Hive确实允许主键和唯一键重复。在将数据加载到Hive表之前,您应该有一个上游工作来进行数据清理。 如果数据较少,您可以编写一个python脚本;如果数据巨大,则可以使用spark。

spark提供了dropDuplicates()方法来实现此目的。