Сортировать по нескольким значениям с помощью sortBy
Я хотел бы отсортировать RDD[(Int,Int)]
по первому и второму значению, чтобы иметь что-то подобное.
[(1,1),(1,2),(1,3),(2,1),(2,2),(3,1)....]
Я пробовал это
rdd.sortBy( x => (x._1,x._2) )
Но, похоже, он не работает, даже если он компилируется, он сортируется только по первому значению.
Возможно, я мог бы поместить каждый результат первой сортировки в другой раздел, а затем применить сортировку ко второму значению.
1 ответ
Ответ в том, что
rdd.sortBy(x=>(x._1,x._2))
работает.
Я полностью забываю, что я отображал результат с foreach, который отображает rdd неупорядоченным образом. После использования команды collect/take(n) я получил то, что искал.
Поэтому, чтобы убедиться, что ваши сортировочные работы НЕ используют
rdd.foreach(println)
Но использовать
rdd.collect.foreach(println)