如何使用值来命令我的元组的spark结果降序

时间:2017-01-29 08:02:30

标签: scala hadoop apache-spark

我是新来的火花和斯卡拉。我需要将结果计数元组(如(课程,计数))按降序排序。我把它放在下面

copy(dst, values)

但仍然无法正常工作。以上述方式,它将按升序对计数结果进行排序。但我需要按降序排列。任何人都可以帮助我。

结果如下所示

 val results = ratings.countByValue()
 val sortedResults = results.toSeq.sortBy(_._2)

但我需要像下面那样显示它

(History, 12100),
(Music, 13200),
(Drama, 143000)

感谢

3 个答案:

答案 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))

注意:不要忘记 => 后面的括号。