我试图通过在几列上使用dropDuplicates()来删除spark数据框中的重复项。但是由于涉及大量的改组和数据偏斜,工作变得无能为力了。我已经使用5核和30GB内存来做到这一点。我正在执行dropDuplicates()的数据大约有1200万行。
考虑到数据偏斜和混排,请向我建议去除火花中重复项的最佳方法。
答案 0 :(得分:0)
删除重复操作是一项昂贵的操作,因为它会将一个RDD中的值与所有其他RDD中的值进行比较,并尝试合并结果。考虑数据结果的大小可能很耗时。
我建议在数据框的列上进行groupby转换,然后执行提交操作。这样,只有RDD的合并结果会与其他RDD过于懒惰的结果进行比较,然后您可以通过诸如commit / show等任何操作来请求结果
transactions.groupBy("col1”,”col2").count.sort($"count".desc).show