我有一个RDD [(Int,Array(Double))]和
一样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)
我想根据第1列(1,5,2)
中的Distinct值对RDD进行排序必需的输出
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列中按
排序(1,5,2)
答案 0 :(得分:1)
您可以先在示例中定义您的订购:
val ordering = (1,5,2).productIterator.toList.zipWithIndex.toMap
然后应用它:
rdd.sortBy{case (k,v) => ordering(k)}