Unión e interseción de RDD en Scala

Union – union()scala_logo

Nos devuelve la unión de los dos RDDs

val rdd1 = sc.parallelize(1 to 4, 1)
val rdd2 = sc.parallelize(8 to 10, 1)
rdd1.union(rdd2).collect()
res: Array[Int] = Array(1, 2, 3, 4, 8, 9, 10)

 

Unión por clave – join()

Nos devuelve la unión de dos RDDs unidos por clave. Si los conjuntos de datos son de tipo (K, V) y (K,W), nos devuelve un conjunto de datos de (K, (V, W)) para cada clave.
val rdd1 = sc.parallelize(List((1, "tren"), (2, "avion"), (3, "barco"), (3, "moto")))
val rdd2 = sc.parallelize(List((1, "rojo"), (2, "azul"), (3, "verde")))
rdd1.join(rdd2).collect()
res: Array[(Int, (String, String))] = Array((1,(tren,rojo)), (2,(avion,azul)), (3,(barco,verde)), (3,(moto,verde)))

 

Intersección – intersection()

Nos devuelve la interseción de los dos RDDs

val rdd1 = sc.parallelize(1 to 6, 1)
val rdd2 = sc.parallelize(4 to 10, 1)
rdd1.intersection(rdd2).collect()
res: Array[Int] = Array(4, 6, 5)