Spark Graphx inDegrees Sorting - sortBy Vs sortWith

时间:2017-12-11 22:23:40

标签: scala apache-spark spark-graphx

我试图在Spark Graph中使用in-degrees对顶点列表进行排序(使用Scala)

// Sort Ascending - both the 2 below yeild same results

gGraph.inDegrees.collect.sortBy(_._2).take(10)

gGraph.inDegrees.collect.sortWith(_._2 < _._2).take(10)

// Sort Decending 

gGraph.inDegrees.collect.sortWith(_._2 > _._2).take(10)

gGraph.inDegrees.collect.sortBy(_._2, ascending=false).take(10)     //Doesnt Work!!

我希望sortBy(_._2, ascending=false)的结果与上面提到的sortWith(_._2>_._2)相同。但得到以下错误。欣赏有关此问题的任何想法。谢谢!

  

阶&GT; gGraph.inDegrees.collect.sortBy(_。 2,ascending = false).take(10)   :55:错误:方法sortBy的参数太多:(f:   ((org.apache.spark.graphx.VertexId,Int))=&gt; B)(隐含的ord:   scala.math.Ordering [B])Array [(org.apache.spark.graphx.VertexId,Int)]                 gGraph.inDegrees.collect.sortBy( ._ 2,ascending = false).take(10)

1 个答案:

答案 0 :(得分:1)

由于您先行.collect,因此您在.sortBy上呼叫Array,而不是RDDArray的{​​{1}}方法只需要一个参数(您无法指定sortBy)。

通常应该让spark处理尽可能多的计算,并且最后只有ascending(或collect)。试试这个:

take