本文介绍了删除每个分区的重复项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
原始数据
cls, id
----
a, 1
a, 1
----
b, 3
b, 3
b, 4
预期输出
cls, id
----
a, 1
----
b, 3
b, 4
id 只能在同一个 cls 中重复,表示跨 clses 不存在相同的 id.
id can be duplicates only in same cls, It means same id do not exist across clses.
那样的话.
df.dropDuplicates($id)
将在所有分区中随机播放以检查 cls 上的重复项.并重新分区为 200(默认值)
will shuffle across all partitions to check duplicates over cls. and repartitioned to 200(default value)
现在,我如何为每个分区单独运行 dropDuplicates 以降低计算成本?
Now, How can I run dropDuplicates for each partition seperately to reduce computing cost?
类似的东西
df.foreachPartition(_.dropDuplicates())
推荐答案
您可能正在追求这样的事情:
You're probably after something like this:
val distinct = df.mapPartitions(it => {
val set = Set();
while (it.hasNext) {
set += it.next()
}
return set.iterator
});
这篇关于删除每个分区的重复项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!