2017-07-03 59 views
0

我有一個RDD [(中間體,陣列(雙))]等排序RDD根據在一個列中的不同的值

1, Array(2.0,5.0,6.3) 
5, Array(1.0,3.3,9.5) 
1, Array(5.0,4.2,3.1) 
2, Array(9.6,6.3,2.3) 
1, Array(8.5,2.5,1.2) 
5, Array(6.0,2.4,7.8) 
2, Array(7.8,9.1,4.2) 

我想根據在第一列中的唯一值的RDD進行排序( 1,5,2)

所需輸出

1, Array(2.0,5.0,6.3) 
1, Array(5.0,4.2,3.1) 
1, Array(8.5,2.5,1.2) 
5, Array(1.0,3.3,9.5) 
5, Array(6.0,2.4,7.8) 
2, Array(9.6,6.3,2.3) 
2, Array(7.8,9.1,4.2) 

我與命令試圖像

rdd.groupby() 
rdd.sortby() 

所有這些東西都會產生輸出,排序列表像

1, Array(2.0,5.0,6.3) 
1, Array(5.0,4.2,3.1) 
1, Array(8.5,2.5,1.2) 
2, Array(9.6,6.3,2.3) 
2, Array(7.8,9.1,4.2) 
5, Array(1.0,3.3,9.5) 
5, Array(6.0,2.4,7.8) 

我如何排序具有鮮明的價值RDD是第一列由

(1,5,2) 
+0

這是你的全部數據集?你會不會總是有這3個數字,即'(1,5,2)'? – philantrovert

+0

編號數據集變化可能有不同的值(1,5,2,3,8,..)。想要安排在這個不同的順序的數據 –

回答

1

你可以先定義排序爲您例如:

val ordering = (1,5,2).productIterator.toList.zipWithIndex.toMap 

,然後應用它:

rdd.sortBy{case (k,v) => ordering(k)} 
+0

不給出OP想要的輸出。 – philantrovert

+0

對不起,沒有正確閱讀!我已經更新了我的答案,他們想要什麼:-) –

+0

很棒,upvoted。 – philantrovert

相關問題