En Apache Spark, el procesamiento de datos se divide en dos tipos principales de operaciones: transformaciones y acciones. Comprender estas operaciones es clave para aprovechar al máximo el potencial de Spark.


Diferencia entre Transformaciones y Acciones

  1. Transformaciones:
  2. Acciones:

Transformaciones Comunes

1. map

Aplica una función a cada elemento del RDD o DataFrame y devuelve un nuevo conjunto transformado.

rdd = sc.parallelize([1, 2, 3, 4])
mapped_rdd = rdd.map(lambda x: x * 2)
print(mapped_rdd.collect())  # [2, 4, 6, 8]

2. filter

Filtra elementos que cumplen una condición específica.

rdd = sc.parallelize([1, 2, 3, 4])
filtered_rdd = rdd.filter(lambda x: x % 2 == 0)
print(filtered_rdd.collect())  # [2, 4]

3. flatMap

Genera múltiples elementos para cada entrada.

rdd = sc.parallelize(["hola mundo", "aprendiendo spark"])
flat_mapped_rdd = rdd.flatMap(lambda x: x.split(" "))
print(flat_mapped_rdd.collect())  # ["hola", "mundo", "aprendiendo", "spark"]

4. groupByKey

Agrupa los elementos por clave.

rdd = sc.parallelize([("a", 1), ("b", 2), ("a", 3)])
grouped_rdd = rdd.groupByKey()
print([(k, list(v)) for k, v in grouped_rdd.collect()])  # [("a", [1, 3]), ("b", [2])]

5. reduceByKey