2016-07-29 84 views
0

我正在使用Apache spark創建一個項目。我非常瞭解spark中的轉換和操作,但是突然間,我和Spark中的sortByKey()函數混淆了。apache spark中的sortbykey

這是如何工作的,它是否認爲排序或數據的所有分區(即所有RDD)都是在單個RDD內進行排序?

我的要求是讓數據在全局排序,就像我們用任何編程語言排序(java中的Collections.sort())。

考慮下面的代碼:(XYZ是經過一些系列的操作RDD)

JavaPairRDD<Float,Object>sorted = xyz.transformToPair(rdd->rdd.sortByKey()); 

請問上述說法給出結果是在全球範圍內進行排序?

如果不是,那麼如何在全局範圍內對數據進行排序,即考慮所有分區間的所有數據?

在此先感謝。

回答

0

據全局排序(OrderedRDDFunctions):

排序的RDD通過鍵,使每個分區包含元素的排序範圍。調用收集或保存在生成​​的RDD上將返回或輸出有序的記錄列表(在保存的情況下,它們將按照鍵的順序寫入文件系統中的多個部分-X文件)。