Mapear – map()
Nos devuelve un RDD después de aplicar una función de transformación al RDD original.
val rdd1 = sc.parallelize(List(1,2,3,4,5,6,7,8,9)) val rdd2 = rdd1.map(_ * 2) rdd2.collect
res: Array[Int] = Array(2, 4, 6, 8, 10, 12, 14, 16, 18)
Mapear 2 – flatMap()
Similar a la función map, pero la función devuelve una secuencia de valores
val rdd1 = sc.parallelize(List("En un lugar de la mancha", "de cuyo nombre no quiero acordarme")) val rdd2 = rdd1.map(x => x.split(" ")) // split(" ") returns an array of words rdd2.collect() val rdd3 = rdd1.flatMap(x => x.split(" ")) rdd3.collect()
res2: Array[Array[String]] = Array(Array(En, un, lugar, de, la, mancha), Array(de, cuyo, nombre, no, quiero, acordarme)) res3: Array[String] = Array(En, un, lugar, de, la, mancha, de, cuyo, nombre, no, quiero, acordarme)
Mapear por partición – mapPartitions()
Similar a la función map, pero se ejecuta por separado en cada partición del RDD
val rdd = sc.parallelize(List("a","b","c","d","e","f"),3) def myfunc(index: Int, iter: Iterator[(String)]) : Iterator[String] = { iter.map(x => "[id de partición:" + index + ", valor: " + x + "]") } rdd.mapPartitionsWithIndex(myfunc).collect
res: Array[String] = Array([id de partición:0, valor: a], [id de partición:0, valor: b], [id de partición:1, valor: c], [id de partición:1, valor: d], [id de partición:2, valor: e], [id de partición:2, valor: f])
0 comentarios