Ответ 1
Все операции сохраняют порядок, за исключением тех, которые явно не выполняются. Заказ всегда "значим", а не только после sortBy
. Например, если вы читаете файл (sc.textFile
), строки RDD будут находиться в том порядке, в котором они находятся в файле.
Не пытаясь дать полный список, map
, filter
, flatMap
и coalesce
(с shuffle=false
) сохраните этот порядок. sortBy
, partitionBy
, join
не сохраняют порядок.
Причина в том, что большинство операций RDD работают на Iterator
внутри разделов. Поэтому map
или filter
просто не может испортить заказ. Вы можете посмотреть код, чтобы убедиться сами.
Теперь вы можете спросить: что делать, если у меня есть RDD с HashPartitioner
. Что происходит, когда я использую map
для изменения ключей? Ну, они останутся на месте, и теперь RDD не разделяется ключом. Вы можете использовать partitionBy
для восстановления разбиения с помощью тасования.