在Spark中,我想通过两个不同的字段对RDD进行排序。例如,在这里的给定示例中,我想首先按fieldA
对元素进行排序,然后在fieldB
(二级排序)中排序。在给定示例中使用的方法是否足够好?我已经测试了我的代码,它可以工作。但是,这是一个可靠的方法吗?通过在Spark中使用连接进行二次排序?
// x is of type (key, fieldA) and y of type (key, fieldB)
val a = x.sortBy(_._2)
// b will be of type (key, (fieldB, fieldA))
val b = y.join(x).sortBy(_._2._1))
因此,例如,我需要一个如下所示的输出。
fieldA, fieldB
2, 10
2, 11
2, 13
7, 5
7, 7
7, 8
9, 3
9, 10
9, 10
但为此,我想你将不得不定义排序变量如何排序类型的(A,B)。没有?可能还有其他方法,但是我的问题与我正在使用的方法有关,如果那个方法可靠的话。 – pythonic