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

Dil*_*lee 10 hadoop scala apache-spark

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

 val results = ratings.countByValue()
 val sortedResults = results.toSeq.sortBy(_._2)
Run Code Online (Sandbox Code Playgroud)

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

结果如下

(History, 12100),
(Music, 13200),
(Drama, 143000)
Run Code Online (Sandbox Code Playgroud)

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

(Drama, 143000),
(Music, 13200),
(History, 12100)
Run Code Online (Sandbox Code Playgroud)

谢谢

mrs*_*vas 10

你差不多完成了!您需要为降序添加其他参数,因为默认情况下RDD sortBy()方法按升序排列元素.

val results = ratings.countByValue()
val sortedRdd = results.sortBy(_._2, false)

//Just to display results from RDD
println(sortedRdd.collect().toList)
Run Code Online (Sandbox Code Playgroud)


Mar*_*jek 5

您可以使用

.sortWith(_._2 >_._2)
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,调用toSeq并不是一个好主意,因为驱动程序需要将其放入内存中,并且在较大的数据集上可能会用完内存。我想介绍一下是可以的。

  • 这样可以通过将项目与您提供的功能进行比较来对集合进行排序。它是[(x,y)=> x> y]的较短表示法,它与_> _相同,并且您想通过元组的第二个元素进行比较,然后得到_._ 2> _._ 2希望对您有所帮助你;)-我还花了一段时间来习惯这种scala魔术:) (2认同)