0
如果我们使用.reduce(max)
那么我们将在整个RDD中获得最大的关键。我知道这种减少将在所有分区上运行,然后减少每个分区发送的这些项目。但是我们怎样才能找回每个分区的最大关键?为.mapPartitions()
写一个函数?如何获取每个Spark分区的最大密钥?
如果我们使用.reduce(max)
那么我们将在整个RDD中获得最大的关键。我知道这种减少将在所有分区上运行,然后减少每个分区发送的这些项目。但是我们怎样才能找回每个分区的最大关键?为.mapPartitions()
写一个函数?如何获取每个Spark分区的最大密钥?
您可以:
rdd.mapParitions(iter => Iterator(iter.reduce(Math.max)))
或
rdd.mapPartitions(lambda iter: [max(iter)])
在流媒体使用这种与DStream.trasform
。
谢谢,我还有一个问题。如果有3个最大的键并且它们彼此相等,则rdd.mapPartitions(lambda iter:[max(iter)])只返回1,那么我们如何才能将这3个最大键集中在一起呢? –