En Apache Spark, ¿por qué RDD.union no conserva el particionador?

Como todos saben, los particionadores en Spark tienen un gran impacto en el rendimiento en cualquier operación "amplia", por lo que generalmente se personaliza en las operaciones. Estaba experimentando con el siguiente código:

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)

Veo que por defectocogroup() siempre produce un RDD con el particionador personalizado, perounion() no, siempre volverá a los valores predeterminados. Esto es contrario a la intuición, ya que generalmente suponemos que un PairRDD debe usar su primer elemento como clave de partición. ¿Hay alguna manera de "forzar" a Spark a fusionar 2 PairRDD para usar la misma clave de partición?

Respuestas a la pregunta(1)

Su respuesta a la pregunta