首页 文章

Scala / Spark在多个维度上进行排序,在特定维度上进行反向排序

提问于
浏览
0

我想订购例如2d数组或RDD如下:

val a = Array((1,1),(1,2),(1,3),(2,1),(2,2),(2,3))

要在d1上获得升序排序,在d2上获得降序排序:

val b = Array((1,3),(1,2),(1,1),(2,3),(2,2),(2,1))

不幸的是,当我在订购中应用反向时,它适用于所有维度

a.sortBy( x=> (x._1,x._2) )(Ordering[(Int,Int)].reverse.on(x=> (x._1,x._2)))
Array((2,3), (2,2), (2,1), (1,3), (1,2), (1,1))

因此,我希望能够对多维度选择进行排序,以便我需要进行反向排序 .

1 回答

  • 0

    此帖子包含answear Scala idiom for ordering by multiple criteria

    val ord1 = Ordering.by{ x:Int => x }
    val ord2 = Ordering.by{ x:Int => x }.reverse
    val multOrd = Ordering.by{ x:(Int,Int) => x }(Ordering.Tuple2(ord1,ord2))
    a.sortBy( identity )(multOrd)
    Array((1,3),(1,2),(1,1),(2,3),(2,2),(2,1))
    

    希望它可以提供帮助

相关问题