在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