Почему в Apache Spark RDD.union не сохраняет разделитель?

Как всем известно, разделители в Spark оказывают огромное влияние на производительность любых «широких» операций, поэтому обычно они настраиваются в операциях. Я экспериментировал со следующим кодом:

val rdd1 =
  sc.parallelize(1 to 50).keyBy(_ % 10)
    .partitionBy(new HashPartitioner(10))
val rdd2 =
  sc.parallelize(200 to 230).keyBy(_ % 13)

val cogrouped = rdd1.cogroup(rdd2)
println("cogrouped: " + cogrouped.partitioner)

val unioned = rdd1.union(rdd2)
println("union: " + unioned.partitioner)

Я вижу что по умолчаниюcogroup() всегда выдает СДР с настроенным разделителем, ноunion() нет, он всегда вернется к значению по умолчанию. Это нелогично, поскольку мы обычно предполагаем, что PairRDD должен использовать свой первый элемент в качестве ключа раздела. Есть ли способ «заставить» Spark объединить 2 PairRDD для использования одного и того же ключа раздела?

Ответы на вопрос(1)

Ваш ответ на вопрос