32

Gibt es eine Möglichkeit, Datensätze von zwei verschiedenen s in Funken zu verketten?Verketten von Datensätzen verschiedener RDDs in Apache Spark mit Hilfe von Scala

Anforderung ist - ich erstelle zwei Zwischen-RDDs mit Scala, die gleiche Spaltennamen hat, müssen diese Ergebnisse der RDDs kombinieren und das Ergebnis für den Zugriff auf UI Cache. Wie kombiniere ich die Datensätze hier?

RDDs sind vom Typ spark.sql.SchemaRDD

+1

Kannst du '++' nicht einfach verwenden? – lmm

+1

@lmm Nein. Es fügt Spalten zur RDD hinzu. Ich muss der RDD Zeilen hinzufügen. Ich habe zwei RDDs mit denselben Spalten, deren Datensätze zu einer einzigen RDD zusammengeführt werden müssen. – Atom

+1

Nein, es wird nicht, ich habe es nur versucht, um sicher zu sein. '++' erstellt eine union RDD mit den Ergebnissen von beiden. – lmm

Antwort

43

Ich denke, die Sie suchen RDD.union

val rddPart1 = ??? 
val rddPart2 = ??? 
val rddAll = rddPart1.union(rddPart2) 

Beispiel (auf Spark-Schale)

val rdd1 = sc.parallelize(Seq((1, "Aug", 30),(1, "Sep", 31),(2, "Aug", 15),(2, "Sep", 10))) 
val rdd2 = sc.parallelize(Seq((1, "Oct", 10),(1, "Nov", 12),(2, "Oct", 5),(2, "Nov", 15))) 
rdd1.union(rdd2).collect 

res0: Array[(Int, String, Int)] = Array((1,Aug,30), (1,Sep,31), (2,Aug,15), (2,Sep,10), (1,Oct,10), (1,Nov,12), (2,Oct,5), (2,Nov,15)) 
+0

rddPart1.union (rddPart2) fügt Spalten von rddPart2 zu rddPart1 hinzu. Ich muss Zeilen von rddPart2 zu rddPart1 hinzufügen. FYI, beide RDDs haben in diesem Fall die gleichen Spaltennamen und Typen – Atom

+0

Es ist eher wie Einfügen von Datensätzen in eine bereits vorhandene RDD. Keine neuen Spalten zu RDD – Atom

+2

@example hinzugefügt ein Beispiel hinzugefügt. Es gibt keine neuen Spalten für eine Union-RDD. – maasg