如何在Scala中按值对RDD数据(键,值)进行排序?

时间:2018-12-17 13:52:36

标签: scala sorting apache-spark rdd

我已经尝试过像这样的方法“ sortBy”:

ranks.sortBy(x=> x._2, false);

但是,等级值未排序,细节显示在图片中。 my failed solutions

那么我应该如何纠正我的解决方案?为什么会失败? 感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

在您的情况下,我假设ranksvar

调用ranks.sortBy...时,并没有将其分配给任何变量-您只是在要求编译器对内容进行sortBy并丢弃结果。

您只需要将此变量分配给变量即可使用(ranks = ranks.sortBy(...)val something = ranks.sortBy(...))。这是REPL中的一个简单示例:

scala> var l = List(3, 1, 2)
l: List[Int] = List(3, 1, 2)

scala> l.sortBy(x => x)
res1: List[Int] = List(1, 2, 3)

scala> l // will be the same as before
res2: List[Int] = List(3, 1, 2)

scala> l = l.sortBy(x => x)
l: List[Int] = List(1, 2, 3)

scala> l // will have changed
res3: List[Int] = List(1, 2, 3)