32

Esiste un modo per concatenare set di dati di due diversi RDD s nella scintilla?Concatenazione di serie di dati di diversi RDD nella scintilla di Apache utilizzando scala

Il requisito è: creo due RDD intermedi utilizzando scala con gli stessi nomi di colonna, è necessario combinare questi risultati di entrambi gli RDD e memorizzare nella cache il risultato per l'accesso all'interfaccia utente. Come posso combinare i set di dati qui?

RDDs sono di tipo spark.sql.SchemaRDD

+1

Non puoi usare '++'? – lmm

+1

@lmm No .. Aggiungerà colonne all'RDD. Devo aggiungere righe all'RDD. Ho due RDD con le stesse colonne i cui record devono essere uniti a un singolo RDD. – Atom

+1

No, non lo farò, l'ho appena provato per essere sicuro. '++' crea un RDD unione con i risultati di entrambi. – lmm

risposta

43

Penso che si sta cercando RDD.union

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

Esempio (su 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)) 
+0

rddPart1.union (rddPart2) aggiungerà colonne di rddPart2 a rddPart1. Devo aggiungere righe di rddPart2 a rddPart1. Cordiali saluti, entrambi gli RDD in questo caso hanno gli stessi nomi e tipi di colonna – Atom

+0

È più simile all'inserimento di record in un RDD già esistente. Non creare nuove colonne in RDD – Atom

+2

@esempio aggiunto un esempio. Non ci sono nuove colonne per un sindacato RDD. – maasg