Spark - 使用JavaPairRDD按值排序

chr*_*ina 4 sorting apache-spark

与工作apache spark使用Java.我得到了一个JavaPairRDD<String,Long>,我想按其值对这个数据集进行排序.但是,似乎只有sortByKey方法.我怎么能按Long类型的值对它进行排序?

Atu*_*man 5

dataset.mapToPair(x - > x.swap()).sortByKey(false).mapToPair(x - > x.swap()).take(100)


maa*_*asg 4

Spark 尚不支持“二次排序”(有关详细信息,请参阅SPARK-3655 )。

作为解决方法,您可以通过交换 key <-> value 并照常按键排序来按值排序。

在 Scala 中会是这样的:

val kv:RDD[String, Long] = ??? 
// swap key and value
val vk = kv.map(_.swap)
val vkSorted = vk.sortByKey
Run Code Online (Sandbox Code Playgroud)