我有一个 RDD
的 (name:String, popularity:Int, rank:Int)
.我想按 rank
排序如果 rank
然后匹配 popularity
.我通过两个转换来做到这一点。
var result = myRDD
.sortBy(_._2, ascending = false)
.sortBy(_._3, ascending = false)
.take(10)
我可以在一次转换中完成吗?
最佳答案
您可以尝试制作 RDD
键值为Tuple
的键值由 rank
组成和 popularity
值将是 name
并按键排序。
例如:
// _._1 - name
// _._2 - popularity
// _._3 - rank
var tupledRDD = myRDD.map(line => ((line._3, line._2), line._1))
.sortBy(_._1, ascending=false)
.take(10)
关于scala - spark RDD 按两个值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36963319/