Puedes leer todo sin registrarte. Solo crearemos un perfil anónimo cuando decidas guardar tu progreso.
Lección 3 de 5
Particiones y paralelismo
Broadcast evita mover el lado grande cuando el otro cabe con seguridad en ejecutores.
- Duración
- 17 min aprox.
- Objetivo
- Broadcast evita mover el lado grande cuando el otro cabe con seguridad en ejecutores.
- Siguiente paso
- Continuar con la siguiente lección
Ver detalles del módulo
Catalyst, particiones, joins y shuffles
Razona sobre el plan lógico y físico antes de ajustar configuraciones o añadir cómputo.
- Leer explain formatted
- Detectar Exchange, skew y spill
- Elegir broadcast, repartition o coalesce con evidencia
03OperaciónParticiones y paralelismo
Broadcast evita mover el lado grande cuando el otro cabe con seguridad en ejecutores.
+
Particiones y paralelismo
Broadcast evita mover el lado grande cuando el otro cabe con seguridad en ejecutores.
Mostrar prerrequisitos
- Dificultad
- Associate + Professional
- Prerrequisitos
- m04
BroadcastHashJoin distribuye una relación pequeña a cada executor y elimina el shuffle de la grande. El umbral automático o broadcast hint influyen en Catalyst.
Una estimación obsoleta puede emitir un broadcast demasiado grande y causar presión de memoria. SortMergeJoin es razonable para dos lados grandes.
Modelo mental
Un broadcast join cambia quién se mueve. En un shuffle join ambos lados se redistribuyen por clave; en BroadcastHashJoin el lado pequeño se recopila y distribuye a los executors para construir una tabla hash local, de modo que las particiones del lado grande pueden leerse donde están. La ventaja depende del tamaño serializado real y de la memoria disponible en cada executor, no de que el dataset se llame dimensión. Catalyst puede elegir broadcast con estadísticas y umbral, y un hint puede influir, pero forzar una relación creciente puede causar OOM. Cuando ambos lados son grandes, sort-merge suele ser una estrategia razonable aunque implique shuffle.
Join que replica una relación pequeña y construye una tabla hash local en cada executor.
Evita redistribuir el lado grande cuando la memoria soporta la réplica.Estimación del volumen de una relación usada por el optimizador para comparar estrategias.
Una estimación obsoleta puede conducir a un plan físico inadecuado.Indicación declarativa que influye en la estrategia seleccionada por Catalyst.
Debe usarse con evidencia porque puede imponerse sobre una decisión adaptativa más segura.from pyspark.sql.functions import broadcast
enriched = facts.join(broadcast(dim.select("id", "segment")), "id")Confirma el tamaño real de dim y el operador del plan.
Puntos clave
- Broadcast mueve el lado pequeño
- Las estadísticas importan
- Dos lados grandes suelen requerir shuffle
Evita
- Broadcast de una dimensión no acotada
- Forzar hint sin revisar memoria
Recuerdo activo