Boost Academy
FormaciónEvaluacionesPerfil
Volver
  • En directo

PySpark — Intermedio

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

Skills que aprenderás

  • pyspark

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 profesionales de datos que ya dominan los fundamentos de PySpark y buscan consolidar un perfil técnico capaz de afrontar pipelines de producción con criterio de ingeniería. A lo largo de 8 horas, el participante trabajará en un entorno distribuido real, construyendo pipelines de ingesta multi-formato, comparando estrategias de transformación entre la DataFrame API y Spark SQL, incorporando lógica de negocio mediante UDFs tipadas, y aplicando window functions para métricas analíticas avanzadas. Se dedicará atención especial a la toma de decisiones sobre estrategias de join según el volumen de datos, a la gestión robusta de nulos y esquemas variables, y a la lectura del Spark UI para depurar jobs con fallos o resultados inesperados. Al finalizar, el participante será capaz de diseñar, adaptar y depurar pipelines PySpark intermedios con argumentación técnica sólida sobre rendimiento y mantenibilidad.

  1. Comprender qué es un pipeline de ingesta batch multi-formato y cómo el esquema de lectura condiciona la calidad de los datos en etapas posteriores.
  2. Distinguir las implicaciones de rendimiento y legibilidad entre la DataFrame API y Spark SQL, y reconocer los criterios que determinan cuándo usar cada enfoque.
  3. Identificar las situaciones en que una UDF Python resulta necesaria dentro de un pipeline PySpark y los requisitos de tipado que garantizan su correcto funcionamiento.
  4. Diseñar un pipeline de ingesta y transformación batch que integre al menos dos fuentes de formato distinto, aplicando el esquema correcto en cada lectura.
  5. Comparar el rendimiento y la legibilidad de una misma transformación implementada con la DataFrame API frente a su equivalente en Spark SQL, justificando en un comentario razonado cuándo usar cada enfoque.
  6. Integrar una UDF en Python dentro de un pipeline PySpark para aplicar lógica de negocio no expresable con funciones nativas, garantizando el tipado explícito del valor de retorno.
  7. Justificar la elección de una estrategia de join (broadcast join vs. shuffle join) ante un escenario con tablas de distinto volumen, argumentando el impacto sobre el shuffle y el tiempo de ejecución.
  8. Depurar un job PySpark que produce resultados incorrectos o falla, localizando la causa raíz mediante la lectura del Spark UI (stages, tasks, DAG) y los stack traces del driver.
  9. Adaptar un pipeline existente para gestionar datos con valores nulos y esquemas variables, aplicando estrategias explícitas de limpieza o relleno según el contexto del campo.
  10. Diseñar una agregación con window functions que calcule métricas por partición temporal o categórica sin colapsar el número de filas del DataFrame, comparando su coste frente al uso de UDFs Python versus funciones nativas de pyspark.sql.functions e identificando el impacto en el plan de Catalyst.

Bloque 1 — Ingesta multi-formato y gestión de calidad del dato

Se parte del diseño de pipelines de ingesta batch que combinan fuentes heterogéneas (Parquet, CSV y formatos similares), prestando atención a la inferencia y aplicación explícita de esquemas en cada lectura para garantizar la integridad de los datos desde el origen. A continuación se aborda la gestión de datos imperfectos: detección y tratamiento de valores nulos, evolución de esquemas y estrategias de limpieza o relleno adaptadas al significado semántico de cada campo. Ambas capacidades se trabajan de forma integrada, ya que los problemas de calidad suelen manifestarse precisamente en la frontera entre fuentes.

Bloque 2 — DataFrame API vs. Spark SQL y optimización con funciones nativas

Este bloque explora la dualidad entre la DataFrame API y Spark SQL como dos superficies equivalentes sobre el mismo motor de Catalyst, analizando sus diferencias en legibilidad, composabilidad y rendimiento. Se estudia cuándo cada enfoque resulta más adecuado según el perfil del equipo y la complejidad de la lógica. Paralelamente, se profundiza en el coste real de las UDFs Python —incluyendo la serialización y la opacidad frente al optimizador— comparado con el uso de funciones nativas de pyspark.sql.functions, que permiten a Catalyst generar planes de ejecución más eficientes.

Bloque 3 — UDFs tipadas y lógica de negocio personalizada

Cuando la lógica de transformación no puede expresarse mediante funciones nativas, las UDFs Python constituyen la vía de extensión del motor. Este bloque cubre la integración de UDFs dentro de un pipeline de producción, haciendo énfasis en el tipado explícito del valor de retorno y en las implicaciones que tiene su uso sobre el plan de ejecución. Se presentan patrones para minimizar su impacto y criterios para decidir si conviene refactorizarlas hacia alternativas nativas.

Bloque 4 — Estrategias de join y window functions analíticas

Se analizan las dos estrategias principales de join en Spark —broadcast join y shuffle join— y los criterios de selección basados en el volumen relativo de las tablas, el coste del shuffle y el tiempo de ejecución observado. Seguidamente, se trabaja con window functions para el cálculo de métricas por partición temporal o categórica (rankings, medias móviles, acumulados) sin reducir la cardinalidad del DataFrame, lo que las convierte en una alternativa potente a las agregaciones clásicas con groupBy.

Bloque 5 — Depuración y observabilidad con el Spark UI

El bloque final aborda las habilidades de diagnóstico imprescindibles en entornos de producción. Se practica la lectura sistemática del Spark UI —stages, tasks, DAG y métricas de shuffle— para localizar la causa raíz de jobs que fallan o producen resultados incorrectos, complementándola con la interpretación de stack traces del driver. Se trabaja sobre casos reales de fallo con distintas categorías de error (datos, lógica, recursos) y se establece un flujo de depuración reproducible.

  • Python 3.9 o superior instalado en local o acceso a un entorno de notebook (Jupyter, Databricks Community Edition, Google Colab con PySpark).
  • PySpark 3.3 o superior (pip install pyspark).
  • Java 8 o Java 11 disponible en el sistema (requerido por la JVM de Spark).
  • Acceso a navegador web moderno para la consulta del Spark UI (puerto 4040 en local).
  • Mínimo 8 GB de RAM disponibles para ejecutar los jobs de práctica sin degradación significativa.
  • Datasets de práctica proporcionados en el repositorio del curso (formatos Parquet y CSV, tamaño aproximado 200 MB en total).
  • Manejo básico de PySpark: creación de una SparkSession, lectura de ficheros y operaciones elementales con DataFrames (cubierto en PPS01).
  • Familiaridad con Python a nivel intermedio: funciones, tipos, comprensión de listas y manejo de excepciones.
  • Conceptos fundamentales de procesamiento distribuido: particiones, transformaciones lazy y acciones (cubierto en PPS01).
  • Conocimiento básico de formatos de fichero tabulares (CSV, Parquet) y del concepto de esquema.