2016-12-07 52 views
0

如果我们使用.reduce(max)那么我们将在整个RDD中获得最大的关键。我知道这种减少将在所有分区上运行,然后减少每个分区发送的这些项目。但是我们怎样才能找回每个分区的最大关键?为.mapPartitions()写一个函数?如何获取每个Spark分区的最大密钥?

回答

2

您可以:

rdd.mapParitions(iter => Iterator(iter.reduce(Math.max))) 

rdd.mapPartitions(lambda iter: [max(iter)]) 

在流媒体使用这种与DStream.trasform

+0

谢谢,我还有一个问题。如果有3个最大的键并且它们彼此相等,则rdd.mapPartitions(lambda iter:[max(iter)])只返回1,那么我们如何才能将这3个最大键集中在一起呢? –

相关问题