在 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 中删除重复项的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章