Продолжаю размышления, может есть абстракция типа RDD => Seq[RDD], и можно на каждый RDD применить полученную ShuffleDependency? Но в конечном итоге они снова должны стать одним RDD, что их Union-ом склеивать?
Ну ладно, предположим, получилось сделать Seq[RDD], но стейдж всё равно останется один, значит, нужен соответствующий план, чтобы каталист знал, как его проходить. Получается, надо писать практически всю реализацию, и всё для того, чтобы не раскидывать одновременно сотни терабайт по дискам на экзекуторах