Dans Apache Spark, pourquoi ne RDD.de l'union de ne pas préserver l'outil de partitionnement?

Comme tout le monde le sait partitioners Spark ont un énorme impact sur les performances sur un "large" des opérations, de sorte qu'il est généralement personnalisé dans les opérations. J'ai essayé avec le code suivant:

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)

Je vois que, par défaut, cogroup() donne toujours un EDR avec l'outil de partitionnement personnalisé, mais union() ne le fait pas, il sera toujours en revenir à la valeur par défaut. C'est contre-intuitif que nous avons l'habitude de supposer qu'un PairRDD devrait user de son premier élément clé de partition. Est-il un moyen de "forcer" l'Étincelle de fusionner 2 PairRDDs à utiliser la même clé de partition?

InformationsquelleAutor tribbloid | 2015-04-30