¿Cuáles son las Transformaciones y Acciones en Spark?

| Última modificación: 26 de septiembre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Las transformaciones y acciones en Spark se presentan como una gran estrategia para el análisis de la información dentro del mundo Big Data. Su desarrollo resulta necesario si planeas emplear este sistema de computación Apache Spark.

Por esta razón, desde KeepCoding te introducimos a cuáles son las transformaciones y acciones en Spark como parte del mundo Big Data.

¿Cuáles son las Transformaciones y Acciones en Spark?

A continuación, te compartimos cuáles son las transformaciones y acciones en Spark, de manera que aprendas a emplearlo en tu procesamiento de datos.

Transformaciones en Spark

En primer lugar, dentro del transformaciones y acciones en Spark, se encuentran las funciones de transformaciones en Spark:

  • map(func): devuelve un nuevo RDD tras pasar cada elemento del RDD original a través de una función. Acá vemos la opción de parallelize spark.

val v1 = sc.parallelize(List(2, 4, 8))
val v2 = v1.map(_ * 2)
v2.collect
res0: Array[Int] = Array(4, 8, 16)

  • filter(func): realiza un filtrado de los elementos del RDD original para devolver un nuevo RDD con los datos filtrados. Acá vemos la opción de parallelize spark.

val v1 = sc.parallelize(List(“ABC”, “BCD”, “DEF”))
val v2 = v1.filter(_.contains(“A”))
v2.collect
res0: Array[String] = Array(ABC)

  • flatMap(func): parecido a la operación map, pero esta función devuelve una secuencia de valores. Acá vemos la opción de parallelize spark.

val x = sc.parallelize(List(“Ejemplo proyecto Alejandro”,
“Hola mundo”), 2)
val y = x.map(x => x.split(” “)) // split(” “) returns an
array of words y.collect
res0: Array[Array[String]] = Array(Array(Ejemplo,
proyecto, Alejandro), Array(Hola, mundo))
val y = x.flatMap(x => x.split(” “))
y.collect
res1: Array[String] = Array(Ejemplo, proyecto,
Alejandro, Hola, mundo)

  • mapPartitions (func): similar a la operación map, pero se ejecuta por separado en cada partición del RDD.

val a = sc.parallelize(1 to 9, 3)
def myfunc[T](iter: Iterator[T]) : Iterator[(T, T)] = { var
res = List[(T, T)]()
var pre = iter.next while (iter.hasNext)
{val cur = iter.next; res .::= (pre, cur)
pre = cur;} res.iterator}
a.mapPartitions(myfunc).collect
res0: Array[(Int, Int)] = Array((2,3), (1,2), (5,6), (4,5),
(8,9), (7,8))

  • sample(withReplacement, fraction, seed): muestra una fracción de los datos, con o sin remplazo, utilizando una semilla que genera número aleatorios.

val randRDD = sc.parallelize(List( (7,”cat”), (6,
“mouse”),(7, “cup”), (6, “book”), (7, “tv”), (6, “screen”),
(7, “heater”)))
val sampleMap = List((7, 0.4), (6, 0.6)).toMap
randRDD.sampleByKey(false,
sampleMap,42).collect
res0: Array[(Int, String)] = Array((6,book), (7,tv),
(7,heater))

  • union(otherDataset): devuelve un nuevo RDD con la unión de los elementos de los RDD seleccionados.

val a = sc.parallelize(1 to 3, 1) val b = sc.parallelize(5
to 7, 1) a.union(b).collect()
res0: Array[Int] = Array(1, 2, 3, 5, 6, 7)

  • intersection(otherDataset): devuelve los elementos de los RDD que son iguales.

val x = sc.parallelize(1 to 20) val y = sc.parallelize(10
to 30) val z = x.intersection(y) z.collect

es0: Array[Int] = Array(16, 14, 12, 18, 20, 10, 13, 19,
15, 11, 17)

Acciones en Apache Spark

Estas hacen referencia a las funciones encontradas en Transformaciones y Acciones en Spark.

  • reduce(func): agrega los elementos del dataset usando una función. Esta función debe ser conmutativa y asociativa para que pueda calcularse correctamente en paralelo.

val a = sc.parallelize(1 to 100, 3)
a.reduce(_ + _)
res0: Int = 5050

  • collect(): convierte un RDD en un array y lo muestra en pantalla.

val c = sc.parallelize(List(“Gnu”,
“Cat”, “Rat”, “Dog”, “Gnu”, “Rat”),
2)
c.collect
res0: Array[String] = Array(Gnu,
Cat, Rat, Dog, Gnu, Rat)

  • count(): devuelve el número de elementos del dataset.

val a = sc.parallelize(1 to 4)
a.count
res0: Long = 4

  • first(): devuelve el primer elemento del conjunto de datos.

val c = sc.parallelize(List(“Gnu”,
“Cat”, “Rat”, “Dog”), 2)
c.first
res0: String = Gnu

  • take(n): devuelve un array con los primeros elementos del dataset. Acá vemos la opción de parallelize en spark.

val b = sc.parallelize(List(“dog”,
“cat”, “ape”, “salmon”, “gnu”), 2)
b.take(2)
res0: Array[String] = Array(dog, cat)

  • takeSample(withReplacement, num, [seed]): devuelve un array con una muestra aleatoria de elementos numéricos del dataset, con o sin sustitución, con la opción de especificar opcionalmente una semilla de generador de números aleatorios. Acá vemos la opción de parallelize en spark.

val x = sc.parallelize(1 to 200, 3)
x.takeSample(true, 20, 1)
res0: Array[Int] = Array(74, 164,
160, 41, 123, 27, 134, 5, 22, 185,
129, 107, 140, 191, 187, 26, 55,
186, 181, 60)

  • takeOrdered(n, [ordering]): devuelve los primeros n elementos del RDD usando su orden original o un comparador personalizado. Acá vemos la opción de parallelize en spark.

val b = sc.parallelize(List(“dog”,
“cat”, “ape”, “salmon”, “gnu”), 2)
b.takeOrdered(2)
res0: Array[String] = Array(ape,
cat)

  • saveAsTextFile(path): guarda el RDD como un archivos de texto. Acá vemos la opción de parallelize en spark.

val a = sc.parallelize(1 to 10000, 3)
a.saveAsTextFile(“/home/usuario/datos”)
root@master:/home/usuario/datos

# is

part-00000 part-00001 part-
00002 _SUCCESS

Aprende más sobre el procesamiento Big Data

En este post, te presentamos cuáles son las transformaciones y acciones en Spark, de manera que ahora puedas emplearlas en tu procesamiento de datos. Sin embargo, el desarrollo de Apache Spark posee más alternativas. Por ello, te aconsejamos profundizar en estos conocimientos y aprender a desarrollarlos de manera práctica.

Nuestro Big Data Bootcamp te permitirá consolidar tus conocimientos y poner a prueba tus destrezas en este ámbito de transformaciones y acciones en Spark. En el transcurso de este bootcamp, aprenderás a utilizar sus métodos de inteligencia artificial, aprendizaje automático, estadística y sistemas de bases de datos. ¡No lo dudes más, matricúlate y empieza ahora!

Sandra Navarro

Business Intelligence & Big Data Advisor & Coordinadora del Bootcamp en Data Science, Big Data & Machine Learning.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado