我是新来的火花和斯卡拉。我需要将结果计数元组(如(课程,计数))按降序排序。我把它放在下面
copy(dst, values)
但仍然无法正常工作。以上述方式,它将按升序对计数结果进行排序。但我需要按降序排列。任何人都可以帮助我。
结果如下所示
val results = ratings.countByValue()
val sortedResults = results.toSeq.sortBy(_._2)
但我需要像下面那样显示它
(History, 12100),
(Music, 13200),
(Drama, 143000)
感谢
答案 0 :(得分:7)
你差不多完成了!您需要按降序添加其他参数,因为RDD
sortBy()
method默认按升序排列。
val results = ratings.countByValue()
val sortedRdd = results.sortBy(_._2, false)
//Just to display results from RDD
println(sortedRdd.collect().toList)
答案 1 :(得分:5)
您可以使用
.sortWith(_._2 >_._2)
大多数时候调用seq并不是一个好主意,因为驱动程序需要将它放在内存中,并且你可能会在更大的数据集上耗尽内存。我猜这是o.k.介绍火花。
答案 2 :(得分:-1)
例如,someRDD 是一个pair RDD 并且值是可比的,你可以这样做: someRDD.sortBy(item=>(item._2, false))
注意:不要忘记 => 后面的括号。