Pyspark中的重复数据删除问题

时间:2017-11-06 18:26:17

标签: pyspark pyspark-sql

我有一个数据框,其中有很多行的id,日期和其他信息。它包含 2,856,134 记录。 ID不同的计数会产生 1,552,184 记录。

使用此:

DF2 = sorted(DF.groupBy(DF.id).max('date').alias('date').collect())

为每个ID提供最大日期,并生成 1,552,184 条记录,与上述内容相符。到目前为止一切都很好。

我尝试将DF2加入DF,其中id = id,max_date = date:

df3 = DF2.join(DF,(DF2.id==DF.id)&(DF2.Max_date==DF.date),"left")

这导致 2,358,316 记录 - 与原始数量不同。

我将代码更改为:

df3 = DF2.join(DF,(DF2.id==DF.id)&(DF2.Max_date==DF.date),"left").dropDuplicates()

这导致 1,552,508 记录(这是奇怪的,因为它应该从重复数据删除的DF2返回 1,552,184

知道这里发生了什么吗?我认为这与我的连接功能有关。

谢谢!

1 个答案:

答案 0 :(得分:0)

因为你的表2有重复的条目,例如: Table1 Table2 _______ _________ 1 2 2 2 3 5 4 6 SELECT Table1.Id, Table2.Id FROM Table1 LEFT OUTER JOIN Table2 ON Table1.Id=Table2.Id

结果: 1,null 2,2 2,2 3,null 4,null

我希望这可以帮助您解决问题