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