Saltar al contenido
Lakehouse LabLakehouse LabPreparación Databricks Data Engineer
Módulo 23 · Lección

Broadcast y sort merge join

Contenido abierto

Puedes leer todo sin registrarte. Solo crearemos un perfil anónimo cuando decidas guardar tu progreso.

Lección 3 de 5

Broadcast y sort merge join

Comprende qué puede reoptimizar Adaptive Query Execution en tiempo de ejecución y qué decisiones siguen dependiendo del diseño del ingeniero.

Duración
17 min aprox.
Objetivo
Comprende qué puede reoptimizar Adaptive Query Execution en tiempo de ejecución y qué decisiones siguen dependiendo del diseño del ingeniero.
Siguiente paso
Continuar con la siguiente lección
Ver detalles del módulo

Tuning avanzado de Spark

Optimiza con evidencia del plan y las métricas, no con recetas globales ni más cómputo por defecto.

Al terminar podrás
  • Diagnosticar skew y spill
  • Ajustar joins y particiones
  • Evaluar UDF, Pandas UDF y funciones nativas
Ver fuentes y revisión

Metadatos editoriales

Última revisión
21 jul 2026
Nivel
Professional
Ruta relacionada
performance
Dominios blueprint
Cost & Performance Optimisation · Spark UI
Estado
Revisión editorial interna
Fuentes principales
Adaptive query execution · Diagnose cost and performance issues using the Spark UI
Reportar un error
03
Operación

Broadcast y sort merge join

Comprende qué puede reoptimizar Adaptive Query Execution en tiempo de ejecución y qué decisiones siguen dependiendo del diseño del ingeniero.

Mostrar prerrequisitos
Dificultad
Professional
Prerrequisitos
m12
Reportar un error en esta lección

AQE usa estadísticas disponibles después de exchanges para cambiar una estrategia sort-merge a broadcast hash, combinar particiones post-shuffle demasiado pequeñas, dividir particiones sesgadas y propagar relaciones vacías. En Databricks está habilitado por defecto para consultas batch compatibles con exchanges o subconsultas. El plan adaptativo final puede diferir del plan inicial mostrado antes de ejecutar.

AQE no reordena dinámicamente todos los joins ni arregla un modelo de datos deficiente. Una relación que parece pequeña en catálogo puede superar el límite real, y determinados tipos de join no admiten broadcast en uno de sus lados. Usa `explain('formatted')`, el plan final de Spark UI y métricas de ejecución para demostrar qué regla se aplicó; evita copiar configuraciones antiguas que anulen los defaults optimizados.

Modelo mental

Catalyst prepara una ruta con estimaciones; AQE actúa como un navegador que recalcula cuando ya conoce el tráfico real después de ciertos cruces. Esos cruces son query stages separados por exchanges o subconsultas. Al materializarse una etapa, Spark obtiene tamaños y distribuciones más fiables que las estadísticas previas y puede cambiar algunas decisiones físicas sin alterar la consulta lógica. AQE no es un optimizador omnisciente: no corrige semántica, no rediseña el modelo ni reordena libremente toda cadena de joins. Su valor está en adaptar particiones post-shuffle, tratar skew, propagar relaciones vacías y, cuando procede, sustituir un sort-merge por broadcast con evidencia runtime.

Query stage

Fragmento del plan adaptativo delimitado por exchanges cuya salida puede materializar estadísticas runtime.

AQE toma nuevas decisiones con información precisa al terminar cada etapa materializable.
Post-shuffle coalescing

Combinación dinámica de particiones pequeñas producidas por un shuffle.

Reduce overhead de tareas diminutas sin imponer un número estático adecuado para todos los volúmenes.
Plan final adaptativo

Plan físico efectivo después de aplicar o descartar reglas AQE durante la ejecución.

Es la evidencia para saber qué estrategia se usó; el plan inicial no basta.
PySparkInspeccionar configuración y plan adaptativo
print(spark.conf.get("spark.sql.adaptive.enabled"))

result = (
    facts.join(dimensions, "product_id")
    .groupBy("category")
    .count()
)

result.explain("formatted")
result.count()  # materializa el plan para revisarlo en Spark UI

La acción materializa la consulta; revisa después el plan final y no deduzcas la estrategia sólo del plan inicial.

Puntos clave

  • AQE decide con estadísticas posteriores al shuffle, más precisas que muchas estimaciones previas.
  • Puede coalescer particiones y tratar skew sin alterar el resultado lógico.
  • No sustituye el orden lógico de joins ni una buena reducción temprana de datos.

Evita

  • Suponer que AQE reordena automáticamente una cadena de joins mal diseñada.
  • Desactivar AQE para reproducir una configuración heredada sin comparar resultados y métricas.

Recuerdo activo

¿Qué ventaja tiene un broadcast planeado estáticamente frente a uno elegido tarde por AQE?

Borrador privado · solo en este navegador
5 lecciones pendientes

Vista de lectura · sin ejecución

Learn Databricks

Learn Databricks · commit 08c378c

README.md