原始数据
cls, id
----
a, 1
a, 1
----
b, 3
b, 3
b, 4
预期输出
cls, id
----
a, 1
----
b, 3
b, 4
id只能在同一个cls中重复,也就是说同一个id不能跨cls存在。
在那种情况下。
df.dropDuplicates($id)
将在所有分区之间随机播放以检查 cls 上的重复项。并重新分区为200(默认值)
现在,如何为每个分区单独运行 dropDuplicates 以降低计算成本?
有点像
df.foreachPartition(_.dropDuplicates())
最佳答案
您可能正在寻找这样的东西:
val distinct = df.mapPartitions(it => {
val set = Set();
while (it.hasNext) {
set += it.next()
}
return set.iterator
});
关于apache-spark - 删除每个分区的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42290248/