web-dev-qa-db-de.com

Verketten von Datensätzen verschiedener RDDs in Apache spark using scala

Gibt es eine Möglichkeit, Datensätze von zwei verschiedenen RDDs in spark zu verketten?

Voraussetzung ist - ich erstelle zwei Zwischen-RDDs mit scala mit denselben Spaltennamen, muss diese Ergebnisse beider RDDs kombinieren und das Ergebnis für den Zugriff auf die Benutzeroberfläche zwischenspeichern. Wie kombiniere ich die Datensätze hier? ?

RDDs sind vom Typ spark.sql.SchemaRDD

34
Atom

Ich glaube du suchst RDD.union

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

Beispiel (auf Spark-Shell)

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

Ich hatte das gleiche problem Verwenden Sie unionAll, um nach Zeile statt nach Spalte zu kombinieren:

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

Ich fand es nach dem Lesen der Methodenzusammenfassung für Datenrahmen. Weitere Informationen finden Sie unter: https://spark.Apache.org/docs/latest/api/Java/org/Apache/spark/sql/DataFrame.html

2