2016-12-07 56 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個最大鍵集中在一起呢? –

相關問題