spark RDD 按两个值排序
spark RDD sort by two values
我有 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)
我有 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)