53 votes

Quelle est la différence entre join et cogroup dans Apache Spark

Quelle est la différence entre join et cogroup dans Apache Spark? Quel est le cas d'utilisation de chaque méthode?

79voto

ashburshui Points 964

Laissez-moi vous aider à les clarifier, les deux sont communs à utiliser et important!

def join[W](other: RDD[(K, W)]): RDD[(K, (V, W))]

C'est - prototype de la rejoindre, veuillez vous regardez bien. Par exemple,

val rdd1 = sc.makeRDD(Array(("A","1"),("B","2"),("C","3")),2)
val rdd2 = sc.makeRDD(Array(("A","a"),("C","c"),("D","d")),2)

scala> rdd1.join(rdd2).collect
res0: Array[(String, (String, String))] = Array((A,(1,a)), (C,(3,c)))

Toutes les touches qui apparaissent dans le résultat final est commun à rdd1 et rdd2. Ceci est similaire à l' relation database operation INNER JOIN.

Mais cogroup est différent,

def cogroup[W](other: RDD[(K, W)]): RDD[(K, (Iterable[V], Iterable[W]))]

l'une des clés, au moins apparaître dans l'un des deux rdd, il apparaît dans le résultat final, permettez-moi de préciser:

val rdd1 = sc.makeRDD(Array(("A","1"),("B","2"),("C","3")),2)
val rdd2 = sc.makeRDD(Array(("A","a"),("C","c"),("D","d")),2)

scala> var rdd3 = rdd1.cogroup(rdd2).collect
res0: Array[(String, (Iterable[String], Iterable[String]))] = Array(
(B,(CompactBuffer(2),CompactBuffer())), 
(D,(CompactBuffer(),CompactBuffer(d))), 
(A,(CompactBuffer(1),CompactBuffer(a))), 
(C,(CompactBuffer(3),CompactBuffer(c)))
)

C'est très similar de relation database operation FULL OUTER JOIN, mais au lieu d'aplatir le résultat par ligne par enregistrement, il vous donnera l' interable interface pour vous, l'opération suivante est à vous en tant que pratique!

Bonne Chance!

Spark docs est: http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.rdd.PairRDDFunctions

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X