Si trabajas en Data Engineering, tarde o temprano vas a cruzarte con Apache Spark. Es el motor de procesamiento distribuido más adoptado en la industria y la razón es simple: puede procesar petabytes de datos en minutos distribuyendo el trabajo entre múltiples máquinas. Lo que MySQL o Pandas no pueden manejar, Spark lo hace.
Qué es Apache Spark
Apache Spark es un framework de procesamiento de datos en memoria y distribución paralela. Nació en UC Berkeley en 2009 como respuesta a las limitaciones de Hadoop MapReduce: Hadoop escribía resultados intermedios en disco (lento), Spark los mantiene en memoria (hasta 100x más rápido para cargas iterativas).
Spark no es una base de datos ni un almacén de datos. Es un motor de cómputo: toma datos de donde estén (S3, HDFS, bases de datos, Kafka), los procesa en paralelo a través de un clúster y escribe los resultados donde los necesites.
Arquitectura de Spark: Driver y Executors
Spark tiene una arquitectura maestro-esclavo. El Driver Program es el programa principal: contiene el código que escribes, coordina la ejecución y mantiene el plan del job. Los Executors son los procesos que corren en los nodos del clúster y ejecutan el trabajo real: procesan los datos en particiones paralelas.
El Cluster Manager (YARN, Mesos, Kubernetes o el Standalone de Spark) gestiona los recursos del clúster. En producción moderna, Spark corre sobre Databricks (el servicio managed más popular) o EMR de AWS, que abstraen toda la gestión del clúster.
Los conceptos clave que tienes que entender
RDD: la abstracción base
RDD (Resilient Distributed Dataset) es la abstracción fundamental de Spark: una colección de datos inmutable y distribuida que puede reconstruirse en caso de fallo. Ya no es la API recomendada para la mayoría de casos — los DataFrames son más eficientes — pero entender RDDs es importante para comprender cómo Spark funciona internamente.
DataFrame y Dataset API
Los DataFrames de Spark son similares a los de Pandas pero distribuidos. Tienen un esquema definido (columnas con tipos de datos) y usan el Catalyst Optimizer para planificar automáticamente la ejecución más eficiente. La diferencia clave con Pandas: los DataFrames de Spark pueden manejar datos que no caben en memoria de una sola máquina.
Lazy Evaluation: la clave de la eficiencia
Spark usa lazy evaluation: cuando escribes transformaciones (filter, select, groupBy), Spark no las ejecuta inmediatamente. Construye un DAG (Grafo Acíclico Dirigido) del plan de ejecución. Solo cuando llamas a una acción (show, write, collect) Spark ejecuta el DAG optimizado. Esto le permite fusionar operaciones y minimizar los pases sobre los datos.
Delta Lake: Spark en producción moderna
En producción hoy casi nadie usa Spark vanilla sobre archivos Parquet crudos. Delta Lake (de Databricks, ahora open-source) agrega una capa de transacciones ACID encima de Spark: permite updates, deletes, schema evolution y time travel (consultar el estado de los datos en cualquier punto del pasado). Es el formato estándar en arquitecturas Lakehouse modernas.
En DataPath tenemos el curso de Apache Spark Fundamentals y el de Databricks para Data Engineers con Delta Lake incluido. Ambos son parte de la Ruta Data Engineer.