本文介绍了删除每个分区的重复项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
原始数据
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
});
这篇关于删除每个分区的重复项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!