我有一个包含重复和不同记录的数据库。我必须确定哪些是重复的记录,哪些是不同的记录,并将它们分别拆分为2个不同的子帧。
输入:
custid | cust_name | loc | prodid
1234 | John | US | P133
1234 | John | US | P133
1234 | John | US | P133
5678 | Mike | CHN | P456
4325 | Peter | RUS | P247
3458 | Andy | IND | P764
3458 | Andy | IND | P764
输出:DF 1(Dups):
custid | cust_name | loc | prodid
1234 | John | US | P133
1234 | John | US | P133
1234 | John | US | P133
3458 | Andy | IND | P764
3458 | Andy | IND | P764
DF2(非重复):
custid | cust_name | loc | prodid
5678 | Mike | CHN | P456
4325 | Peter | RUS | P247
有人能帮帮忙吗。
4条答案
按热度按时间5ssjco0h1#
创建一个窗口规范来计算每组中的行数,然后检查
count
大于1的行,以创建一个布尔标志has_dupes
,然后使用此标志filter
子集kgsdhlau2#
使用Spark SQL
使用SPARK CORE
bqf10yzr3#
这里有一个简单的方法。在对所有列执行groupby时获取重复项的计数。然后根据计数进行过滤,并创建两个嵌套框,一个具有重复的客户ID,另一个具有唯一的客户ID。然后将这些与原始的框架结合起来。
输出量:
jum4pzuy4#