Temario del curso
Módulo 1: Fundamentos de Big Data y Spark
- Resumen del ecosistema de Big Data y el papel de Spark en las plataformas de datos modernas
- Comprensión de la arquitectura de Spark: driver, executors, gestor de clúster, evaluación perezosa (lazy evaluation), DAG y planificación de ejecución
- Diferencias entre las APIs de RDD y DataFrame y cuándo utilizar cada enfoque
- Creación y configuración de SparkSession y comprensión de los fundamentos de la configuración de la aplicación
Módulo 2: DataFrames de PySpark
- Lectura y escritura de datos desde fuentes y formatos empresariales: CSV, JSON, Parquet y Delta
- Trabajo con PySpark DataFrames: transformaciones, acciones, expresiones de columnas, filtrado, joins y agregaciones
- Implementación de operaciones avanzadas como funciones de ventana, manejo de marcas de tiempo (timestamps) y trabajo con datos anidados
- Aplicación de controles de calidad de datos y escritura de código PySpark reutilizable y mantenible
Módulo 3: Fundamentos de Kubernetes y Docker para usuarios de Spark
- Comprensión de la relación entre las imágenes de Docker y los pods de Kubernetes con los procesos de driver y executor de Spark: una visión conceptual para consumidores del clúster, no administradores
- Comprensión de lo que sucede cuando una tarea de Spark se ejecuta en Kubernetes: programación de pods, solicitudes y límites de recursos, y cómo los ajustes de sesión se mapean sobre ellos
- Comprensión de lo que controla a través de los parámetros de sesión de Spark frente a lo que el equipo de plataforma controla a través del aprovisionamiento del clúster, y por qué esta frontera es importante para el ajuste fino (tuning)
- Ejercicio práctico: Inspeccionar una tarea de Spark en Kubernetes en ejecución en el clúster de arena (sandbox) e identificar los pods de driver y executor
Módulo 4: Configuración de la sesión de Spark en Kubernetes: Análisis detallado
- Comprensión de la cantidad de executors frente al tamaño de los executors: compensaciones entre memoria y núcleos y cómo razonar sobre ellos
- Asignación de memoria para driver y executors, memoria adicional (overhead) y cómo estos se traducen en recursos de pods
- Asignación dinámica: cómo se comporta en Kubernetes, cuándo ahorra recursos y cuándo no
- Ejercicio práctico: Ejecutar la misma tarea con diferentes configuraciones de executors y núcleos y comparar el tiempo de ejecución y el uso de recursos
Módulo 5: Comportamiento de Escalabilidad y Optimización de Costos
- Comprensión de cómo agregar o eliminar nodos cambia el comportamiento de la tarea, el tiempo de finalización y el consumo de recursos
- Comparación entre muchos executors pequeños frente a menos executors grandes: compensaciones entre rendimiento y costo
- Comportamiento del shuffle y ajuste de particiones de shuffle, incluida la estimación del impacto en costos de las decisiones de configuración
- Ejercicio práctico: Escalar el clúster de arena de cinco a diez nodos y observar el efecto en el tiempo de finalización de la tarea y el consumo de recursos
Módulo 6: Ingesta y Particionado Eficiente de Datos
- Comprensión del problema de los archivos pequeños: por qué las fuentes divididas en muchos archivos Parquet de 1 a 5 MB degradan el rendimiento y distorsionan el particionado
- Estrategias de particionado (repartitioning) y combinación (coalescing)
- Control del tamaño de las particiones en la lectura y en la escritura
- Escritura eficiente de Parquet para evitar recrear el problema de archivos pequeños aguas abajo
- Ejercicio práctico: Cargar un conjunto de datos compuesto por muchas particiones Parquet pequeñas, aplicar diferentes estrategias de particionado y comparar el rendimiento antes y después de la optimización
Módulo 7: Gestión de Memoria y Diagnóstico de Fallos en Pandas
- Comprensión de las causas raíz de los errores de falta de memoria en Pandas y reconocimiento de los síntomas
- Aplicación de patrones de conversión eficientes en memoria entre Spark y Pandas
- Evitar explosiones de memoria al escribir grandes conjuntos de datos en CSV
- Uso de procesamiento por lotes (chunked processing) y optimización de tipos de datos (dtype) para entornos con restricciones
- Ejercicio práctico: Reproducir un escenario típico de falta de memoria en Pandas y resolverlo utilizando procesamiento por lotes y optimización de dtype
Módulo 8: Polars como herramienta complementaria
- Posicionamiento de Polars frente a Pandas: características de rendimiento, evaluación perezosa y comportamiento de memoria
- Comprensión de dónde encaja Polars junto con PySpark y Pandas en las pilas de datos en la nube modernas y las hojas de ruta de migración, incluidos los entornos de AWS
- Ejercicio práctico: Reescribir una transformación intensiva en Pandas usando Polars y comparar el uso de memoria y la velocidad de procesamiento
Módulo 9: Aplicación de la Optimización a Cargas de Trabajo de ETL y ML
- Aplicación de principios de configuración, particionado y gestión de memoria en un pipeline ETL realista
- Comprensión de las consideraciones de optimización específicas para cargas de trabajo de aprendizaje automático que se ejecutan en el mismo clúster
- Aplicación de un flujo de trabajo práctico de ajuste para diagnosticar sistemáticamente problemas de costo y rendimiento
- Ejercicio práctico: Completar un mini proyecto de extremo a extremo que combine carga de datos, transformación y un paso simple de entrenamiento de modelo, con los participantes ajustando la configuración de Spark por sí mismos
Requerimientos
Los participantes deben contar con:
- Experiencia práctica en programación en Python, incluyendo funciones, módulos y conceptos básicos de programación orientada a objetos.
- Experiencia básica o intermedia trabajando con Pandas y flujos de trabajo de procesamiento de datos tabulares.
- Familiaridad básica con PySpark y Spark DataFrames, incluyendo la lectura de datos, transformaciones, acciones, joins y agregaciones.
- Comprensión general de conceptos de SQL y procesamiento de datos, como filtrado, agrupación y combinación de conjuntos de datos.
- Familiaridad básica con conceptos de Docker y Kubernetes, como contenedores, imágenes y pods. No se requiere experiencia en la administración de Kubernetes.
- Comprensión básica de formatos de datos comunes, como CSV, JSON y Parquet.
Los participantes no necesitan ser administradores de Kubernetes ni especialistas en infraestructura. El curso se centra en cómo los ingenieros de datos, desarrolladores y científicos de datos pueden comprender y optimizar sus cargas de trabajo de Spark que se ejecutan en Kubernetes desde la perspectiva de la aplicación y la configuración.
Público objetivo
Este curso está diseñado para profesionales que desarrollan, mantienen u optimizan cargas de trabajo de procesamiento de datos y aprendizaje automático utilizando Python y Spark en entornos en la nube o contenedorizados.
Es especialmente adecuado para:
- Ingenieros de Datos que trabajan con PySpark, procesamiento de datos distribuido y pipelines ETL.
- Científicos de Datos que procesan grandes conjuntos de datos o ejecutan cargas de trabajo de aprendizaje automático con Spark, Pandas o Polars.
- Desarrolladores de Python que trabajan con aplicaciones intensivas en datos y buscan mejorar la eficiencia de memoria y el rendimiento del procesamiento.
- Ingenieros de Aprendizaje Automático que gestionan cargas de trabajo de preparación de datos y entrenamiento de modelos en entornos compartidos de Kubernetes o en la nube.
- Ingenieros de Analítica que trabajan con grandes conjuntos de datos y buscan mejorar la eficiencia del procesamiento de datos.
- Ingenieros DevOps, de Plataforma y en la Nube que brindan soporte a cargas de trabajo de Spark en Kubernetes y necesitan comprender cómo la configuración a nivel de aplicación afecta el uso de recursos y el rendimiento.
- Líderes Técnicos y Arquitectos de Soluciones involucrados en el diseño u optimización de plataformas modernas de procesamiento de datos.
Reseñas (1)
Me gustó que fuera práctico. Amé aplicar el conocimiento teórico con ejemplos prácticos.
Aurelia-Adriana - Allianz Services Romania
Curso - Python and Spark for Big Data (PySpark)
Traducción Automática