在 pySpark 中删除重复项的最佳方法

Posted

技术标签:

【中文标题】在 pySpark 中删除重复项的最佳方法【英文标题】:Most optimal way to removing Duplicates in pySpark 【发布时间】:2018-09-24 19:25:41 【问题描述】:

我正在尝试通过在几列上使用 dropDuplicates() 来删除 spark 数据帧中的重复项。但是由于涉及到大量的洗牌和数据倾斜,工作正在被搁置。我使用了 5 个内核和 30GB 内存来执行此操作。我正在执行 dropDuplicates() 的数据大约有 1200 万行。

考虑到涉及数据倾斜和改组,请建议我在 spark 中删除重复项的最佳方法。

【问题讨论】:

【参考方案1】:

删除重复操作是一项代价高昂的操作,因为它会将一个 RDD 中的值与所有其他 RDD 进行比较并尝试合并结果。考虑数据结果的大小可能会很耗时。

我建议对数据框的列进行 groupby 转换,然后执行提交操作。这样,只有您的 RDD 的合并结果才会与其他过于懒惰的 RDD 进行比较,然后您可以通过任何操作(如 commit / show 等)请求结果

transactions.groupBy("col1”,”col2").count.sort($"count".desc).show

【讨论】:

以上是关于在 pySpark 中删除重复项的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

识别和删除数组中重复项的最有效方法是啥?

如何从 C# 数组中删除重复项?

在 Access DB 中删除重复项的最快方法

Java删除ArrayList中的重复对象[重复]

从 PySpark 中的数据框中删除重复项

从 PySpark 中的数据框中删除重复项