Boost Academy
FormaciónEvaluacionesPerfil
Volver
  • En directo

Apache Spark — Avanzado

10h de clase en directo·HACK A BOSS·Español

Skills que aprenderás

  • Apache Spark

Convocatorias

Necesitas un plan activo

Para acceder a los cursos en directo necesitas un plan activo. Estamos trabajando para que los planes estén disponibles pronto — ¡mantente atento!

No hay convocatorias abiertas ahora mismo, pero no te pierdas la oportunidad: guarda este curso y te avisamos en cuanto se abra una convocatoria.

Descripción

Objetivos

Temario

Requisitos técnicos

Conocimientos previos

Detalles de la convocatoria

Recursos

No hay recursos disponibles todavía para esta convocatoria

Este curso está dirigido a ingenieros de datos y científicos de datos con experiencia previa en Apache Spark que buscan operar y diseñar pipelines de producción a escala empresarial. A lo largo de las 10 horas de formación, el participante profundizará en los mecanismos internos del motor de ejecución de Spark, explorará estrategias avanzadas de optimización de memoria y particionado, y abordará la integración de procesamiento batch y streaming dentro de arquitecturas reales. El curso combina análisis crítico de planes de ejecución mediante Spark UI y explain(), automatización de la detección y corrección de data skew, evaluación comparativa de estrategias de UDFs, diseño de pipelines de machine learning distribuido con MLlib y monitoreo proactivo de jobs en producción; todo ello orientado a que el participante sea capaz de tomar decisiones de arquitectura justificadas con métricas de rendimiento, coste y fiabilidad en entornos con cientos de gigabytes de datos.

Al finalizar el curso, el participante será capaz de:

  1. Conceptualizar los fundamentos del motor de ejecución de Spark —planificación de stages, shuffle, gestión de memoria y formatos de almacenamiento— como base para la toma de decisiones de diseño en pipelines de gran escala.
  2. Distinguir los trade-offs entre procesamiento batch, micro-batch y Spark Structured Streaming, relacionando cada estrategia con requisitos de latencia, throughput y coste de un caso de uso concreto.
  3. Interpretar un plan de ejecución de Spark a través de la Spark UI y explain(), identificando ineficiencias como shuffles innecesarios o particiones sesgadas y vinculándolas con su impacto en el tiempo de ejecución.
  4. Seleccionar la estrategia de persistencia adecuada —cache(), persist() con nivel de almacenamiento específico o checkpointing— en función del patrón de acceso y el tamaño del dataset, justificando la decisión con criterios de uso de memoria.
  5. Diseñar un pipeline de procesamiento batch end-to-end en PySpark capaz de soportar al menos 100 GB de datos, especificando las decisiones de particionado, formato de almacenamiento y estrategia de escritura.
  6. Implementar una función reutilizable de detección y reequilibrio de particiones sesgadas que evalúe el ratio de skew y aplique salting o reparticionado dinámico según un umbral configurable.
  7. Construir un pipeline de machine learning distribuido con MLlib que garantice reproducibilidad mediante la Pipeline API y evalúe el modelo con métricas de validación cruzada a escala.
  8. Optimizar la configuración de un clúster Spark anticipando cuellos de botella para workloads mixtos (joins anchos, agregaciones y escrituras Delta) mediante ajuste de spark.conf y planificación de particionado previos a la ejecución.
  9. Evaluar el coste-rendimiento de Python UDFs frente a Pandas UDFs (Arrow-based) y funciones nativas de Spark, midiendo diferencias de tiempo de ejecución y uso de CPU sobre datasets de referencia.
  10. Automatizar el monitoreo de jobs Spark en producción mediante un collector de métricas clave —duración de stages, registros procesados y errores de OOM— que genere alertas configurables sin intervención manual.

Bloque 1 — Arquitectura de pipelines batch a escala

El curso arranca con un análisis profundo de los componentes internos del motor de ejecución de Spark: cómo se planifican los stages, qué provoca un shuffle y de qué modo las decisiones de particionado y formato de almacenamiento (Parquet, Delta Lake, ORC) condicionan el rendimiento en volúmenes superiores a 100 GB. A partir de este marco conceptual, los participantes diseñarán un pipeline batch end-to-end en PySpark que cubra desde la ingesta hasta la escritura final, justificando cada decisión de arquitectura con criterios de coste y latencia.

Bloque 2 — Diagnóstico y optimización del plan de ejecución

Se profundiza en el uso de Spark UI y la instrucción explain() para leer e interpretar planes físicos y lógicos. Los participantes aprenderán a detectar ineficiencias recurrentes —shuffles evitables, product cartesianos, broadcasts subóptimos— y a medir el impacto de sus correcciones en el tiempo de ejecución. Este bloque incluye asimismo la gestión avanzada de memoria: se analizan y contrastan las opciones cache(), persist() con distintos niveles de almacenamiento y checkpointing, estableciendo criterios de selección en función del patrón de acceso y el tamaño del dataset.

Bloque 3 — Data skew: detección, corrección y automatización

El data skew es una de las causas más frecuentes de degradación en pipelines productivos. En este bloque se estudian los patrones de skew más habituales en joins y agregaciones, se definen métricas de ratio de skew y se implementa una función reutilizable que evalúa el desequilibrio y aplica automáticamente salting o reparticionado dinámico según un umbral configurable. La sesión conecta la teoría del particionado con la práctica de ingeniería de software reutilizable.

Bloque 4 — Batch vs. Streaming: evaluación y selección estratégica

Se examinan los modelos de procesamiento continuo y micro-batch de Spark Structured Streaming frente al procesamiento batch tradicional, evaluando cada alternativa desde las dimensiones de latencia, throughput y coste operativo. Los participantes trabajan sobre escenarios de latencia definida y aprenden a argumentar la elección de estrategia con métricas cuantitativas, un ejercicio crítico para el diseño de arquitecturas de datos modernas.

Bloque 5 — UDFs, MLlib y monitoreo en producción

El bloque final aborda tres áreas de madurez productiva. En primer lugar, se compara el rendimiento de Python UDFs frente a Pandas UDFs (basadas en Apache Arrow) y funciones nativas de Spark, midiendo diferencias en tiempo de ejecución y uso de CPU sobre datasets de al menos 10 millones de filas. A continuación, se integra MLlib en un pipeline de machine learning distribuido con Pipeline API, incorporando versionado de transformaciones y evaluación con validación cruzada a escala. El curso culmina con el diseño de un sistema de monitoreo automatizado que recopila métricas clave de jobs en producción —duración de stages, registros procesados y errores de OOM— y genera alertas configurables sin intervención manual.

  • Entorno de clúster: acceso a un clúster Spark 3.3 o superior (Databricks, Amazon EMR, Google Dataproc o instalación local con al menos 4 cores y 16 GB de RAM disponibles para el driver y los executors).
  • Python: versión 3.9 o superior con pyspark, pandas ≥ 1.5 y pyarrow ≥ 10 instalados.
  • Spark UI: acceso web al puerto 4040 del driver (o History Server configurado) para los ejercicios de diagnóstico de planes de ejecución.
  • Almacenamiento: bucket S3, Azure Data Lake o ruta HDFS con capacidad suficiente para datasets de práctica de al menos 10 GB; se proporcionarán datasets de referencia comprimidos.
  • Delta Lake: librería delta-spark compatible con la versión de Spark del entorno, necesaria para los ejercicios del Bloque 4.
  • Herramientas de desarrollo: Jupyter Lab o Databricks Notebooks como entorno principal; Git para el versionado de los pipelines desarrollados durante el curso.
  • Permisos: capacidad de modificar la configuración de Spark (spark.conf.set) en el entorno de clúster utilizado.
  • Manejo fluido de PySpark: creación y transformación de DataFrames, uso de Spark SQL y operaciones de join y agregación a nivel intermedio (equivalente al contenido de SPK02).
  • Comprensión del modelo de ejecución de Spark: concepto de DAG, stages, tasks y shuffle básico.
  • Programación en Python a nivel intermedio: funciones de orden superior, manejo de excepciones y escritura de módulos reutilizables.
  • Familiaridad con sistemas de almacenamiento distribuido (HDFS, S3 o equivalente) y con al menos un formato columnar (Parquet u ORC).
  • Experiencia práctica previa en la ejecución de jobs Spark en un entorno de clúster real o gestionado (Databricks, EMR, Dataproc o similar).