Semestre 02, 2026
Para un algoritmo iterativo que recorre los mismos datos cincuenta veces, leer y escribir disco domina el tiempo total. Esta lección empieza justo ahí.
Plataforma de procesamiento de datos a gran escala, distribuidos en muchos servidores.
df.filter(...) transformación -> no ejecuta nada
df.select(...) transformación -> no ejecuta nada
df.count() acción -> ahora sí ejecuta todo
Al esperar hasta la acción, Spark ve el plan completo, lo representa como un grafo dirigido acíclico y lo optimiza antes de mover un solo dato.
| Aspecto | MapReduce | Spark |
|---|---|---|
| Resultados intermedios | Disco | Memoria |
| Modelo | Dos etapas fijas | Grafo dirigido acíclico |
| Velocidad iterativa | Lenta | Hasta cien veces mayor |
| Streaming | No incluido | Incluido |
| Lenguajes | Java principalmente | Python, Scala, Java, SQL, R |
Spark no reemplaza a Hadoop, reemplaza a MapReduce. Es común usar HDFS como almacenamiento y Spark como motor sobre esos mismos datos.
Un controlador que funciona como nodo maestro y varios ejecutores que corren como nodos de trabajo. Sirve para procesamiento por lotes y en tiempo real.
| Componente | Rol |
|---|---|
Driver | Coordina la ejecución, corre la función principal y crea el SparkContext |
SparkContext | Punto de entrada a Spark, representa la conexión al clúster y coordina tareas |
Cluster Manager | Asigna recursos y administra el clúster, sea YARN, Mesos o el propio de Spark |
Executor | Proceso en un nodo de trabajo que ejecuta tareas y guarda datos en caché |
Task | Unidad de trabajo más pequeña, un cálculo sobre una sola partición |
Driver -> SparkContext -> Cluster Manager -> Executors -> Tasks
|
resultados de vuelta al Driver
El driver parte el trabajo en tareas y las asigna a los ejecutores, que trabajan de forma simultánea y guardan datos en memoria o disco para reutilizarlos.
Resilient Distributed Dataset, la abstracción original. Colección distribuida, inmutable y tolerante a fallos porque recuerda cómo fue construida.
Capa estructurada sobre esa base, con columnas y tipos, que el optimizador de consultas puede analizar y mejorar.
Se trabaja con DataFrames, y solo se baja a RDD cuando se necesita control fino sobre las particiones.
┌────────────┬─────────┬─────────────┬──────────┐
│ Spark SQL │ MLlib │ Spark │ GraphX │
│ DataFrames │ │ Streaming │ │
├────────────┴─────────┴─────────────┴──────────┤
│ Spark Core API │
│ motor de ejecución │
└───────────────────────────────────────────────┘
Se programa en Scala · Python · Java · SQL · R
Las cuatro librerías de arriba son opcionales y se apoyan sobre el mismo núcleo. Los lenguajes de abajo son la puerta de entrada, no una capa del sistema.
| Librería | Para qué sirve | Ejemplo de uso |
|---|---|---|
Spark SQL | Consultas sobre datos estructurados con DataFrames | Explorar un histórico de ventas |
MLlib | Aprendizaje automático escalable sobre el clúster | Entrenar un clasificador |
Spark Streaming | Flujos en vivo procesados por microlotes | Leer eventos de Kafka |
GraphX | Análisis de grafos como multigrafo dirigido | Calcular caminos mínimos |
Las cuatro comparten el mismo motor y los mismos datos en memoria, así que se combinan en un solo programa sin exportar nada entre etapas.
Repositorio central de datos ya limpios, integrados y modelados, pensado para responder consultas analíticas de negocio.
Repositorio que guarda los datos en su formato crudo, sin imponer una estructura previa, sobre almacenamiento de objetos barato.
Un lago sin catálogo, sin documentación y sin control de calidad se vuelve un depósito donde nadie encuentra nada ni confía en lo que encuentra.
Guardar todo es barato, pero la gobernanza es el costo real. Sin metadatos ni linaje, el volumen acumulado deja de ser un activo.
Arquitectura que pone las garantías de un warehouse sobre el almacenamiento barato de un lake, para no mantener dos sistemas separados.
| Warehouse | Lake | Lakehouse | |
|---|---|---|---|
| Esquema | Al escribir | Al leer | Al leer, con validación |
| Datos | Estructurados | Todos | Todos |
| Costo | Alto | Bajo | Bajo |
| Transacciones | Sí | No | Sí |
| Casos de uso | Reportes | Exploración | Ambos |
El término lakehouse lo acuñó Databricks en 2020. Describe un cambio real, pero nace de un proveedor y no de un consenso neutral.
Plataforma que integra el ciclo de vida del dato, con Spark como motor de fondo.
Levantar un clúster de Hadoop o Spark desde cero exige administración de sistemas que no es el objeto de esta clase.
Databricks entrega el clúster ya configurado y deja el foco en el análisis de los datos.