2016-12-13 2 views
0

Hilfe, ich habe zwei RDDs, ich möchte zu einem RDD zusammenführen.Dies ist mein Code.Wie zwei RDD zu einem RDD zusammengeführt werden

val us1 = sc.parallelize(Array(("3L"), ("7L"),("5L"),("2L"))) 
val us2 = sc.parallelize(Array(("432L"), ("7123L"),("513L"),("1312L"))) 
+1

Was ist Ihre erwartete Ausgabe und was haben Sie versucht? – mtoto

+0

3L 7L 5L 2L 432L 7123L 513L 1312L – Simon

+0

ich diese RDD wollen, bedeutet zwei RDD einem RDD verschmelzen – Simon

Antwort

2

Gerade Vereinigung verwenden:

val merged = us1.union(us2) 

Dokumentation ist here

shotcut in Scala ist:

val merged = us1 ++ us2 
+0

Sie vielen Dank !! – Simon

+0

@ Simon [Bitte upvote oder akzeptiere Antworten, anstatt zu verlassen danke Kommentare] (http://stackoverflow.com/help/someone-answers) –

1

Sie benötigen die RDD.union Diese auf einem Schlüssel nicht beitreten. Union macht nicht wirklich selbst etwas, also ist es wenig Overhead. Beachten Sie, dass die kombinierte RDD über alle Partitionen der ursprünglichen RDDs verfügt. Daher möchten Sie möglicherweise nach der Vereinigung eine Koaleszenz durchführen.

val x = sc.parallelize(Seq((1, 3), (2, 4))) 
val y = sc.parallelize(Seq((3, 5), (4, 7))) 
val z = x.union(y) 
z.collect 
res0: Array[(Int, Int)] = Array((1,3), (2,4), (3,5), (4,7)) 

API

def++(other: RDD[T]): RDD[T] 

Rückkehr die Vereinigung dieser RDD und eine andere.

def++ API

def union(other: RDD[T]): RDD[T] 

Rückkehr die Vereinigung dieser RDD und eine andere. Alle identischen Elemente erscheinen mehrmals (verwenden Sie .distinct(), um sie zu eliminieren).

def union API

+0

Warum möchten Sie danach verschmelzen? Wenn die zwei Eingabe-RDDs ordnungsgemäß partitioniert sind, dann wird auch die Union-RDD verwendet. – Tim

+0

Nur für Leistung und um die Partition zu aktualisieren. Es ist nicht Mandat, aber kann getan werden. Es gibt eine neue RDD zurück, die auf numPartitions-Partitionen reduziert wird. –

+0

Richtig, ich bekomme, was koalesce tut. Aber wenn Ihre Partitionen in beiden Eingabe-RDDs korrekt dimensioniert sind, erzeugt die Koaleszenz zu große Partitionen (besonders wenn Sie die Option shuffle = false verwenden). – Tim

Verwandte Themen