2017-05-14 2 views

Antwort

25

mich verwenden Lassen Sie ihnen helfen, zu klären, beide sind häufig und wichtig zu verwenden!

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

Dies ist prototype von beizutreten, bitte sorgfältig es auch dreht. Zum Beispiel

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))) 

Alle Schlüssel, die im Endergebnis erscheint ist RDD1 und RDD2 gemeinsam. Dies ist ähnlich zu relation database operation INNER JOIN.

Aber cogroup unterscheidet,

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

als ein Schlüssel zumindest in einem der beiden RDDs erscheinen, ist es im Endeffekt erscheinen wird, lassen Sie es mich klarstellen:

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))) 
) 

Dies ist sehr similar zu relation database operation FULL OUTER JOIN, aber statt das Ergebnis pro Zeile pro Datensatz zu verflachen, wird es Ihnen die interable interface zu Ihnen geben, Die folgende Operation ist bis zu Ihnen als bequem!

Viel Glück!

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

+0

Wie 'cogroup' wie für große Datensätze zu verwenden, wenn ich' sammeln verwenden() 'es aus Speicherausnahme wirft' RDD1 = rdd2.cogroup (RDD3) .collect'. Können Sie bei diesem Problem helfen [https://stackoverflow.com/questions/47180307/how-to-use-cogroup-for--large-datasets].Thank Sie – Vignesh

+0

@Vignesh, verwenden Sie bitte Methode statt sammeln. – ashburshui

+0

yh, versucht mit 'take, top' weisst du wie man den untenstehenden Code umpartitioniert – Vignesh

Verwandte Themen