火花RDD按两个值排序

saf*_*qui 3 sorting scala apache-spark rdd

我有一个RDD的(name:String, popularity:Int, rank:Int)。我想按排序rank,如果rank匹配则按排序popularity。我这样做是通过两个转换。

var result = myRDD
        .sortBy(_._2, ascending = false)
        .sortBy(_._3, ascending = false)
        .take(10)
Run Code Online (Sandbox Code Playgroud)

我可以一次转换完成吗?

Avi*_*mka 8

你可以尝试做一个RDD关键值,其中密钥将被Tuple从组成rank和popularity和值将name通过钥匙和排序。

例如:

// _._ 1-名称

// _._ 2-人气

// _._ 3-等级

var tupledRDD = myRDD.map(line => ((line._3, line._2), line._1))
.sortBy(_._1, ascending=false)
.take(10)
Run Code Online (Sandbox Code Playgroud)

  • 正确,或只是`myRDD.sortBy(line =>(line._3,line._2),ascending = false)` (6认同)