Pregunta de entrevista para Ingeniero de datos

Explica la diferencia entre un broadcast join y un shuffle join, y cómo los ajustarías.

Qué evalúa el entrevistador, cómo estructurar tu respuesta y un ejemplo hablado que puedes adaptar.

Respuesta rápida

Un shuffle join reparticiona ambos lados por la clave de join a través de la red para que las claves coincidentes caigan en el mismo executor, lo cual es caro. Un broadcast join envía la tabla más pequeña entera a cada executor, así que el lado grande se une localmente sin shuffle. Haz broadcast cuando el lado pequeño quepa con holgura en la memoria del executor, ajusta el umbral de auto broadcast y asegúrate de que las estadísticas son correctas para que el planificador elija bien.

Por qué lo preguntan los entrevistadores

La estrategia de join es de donde salen la mayoría de las mejoras reales al ajustar Spark, así que los entrevistadores la usan para medir si entiendes la ejecución distribuida o solo llamas a la API. Quieren oír la restricción de memoria del broadcast, el papel de las estadísticas de tabla en las decisiones del planificador, y que sepas que un broadcast equivocado provoca fallos de memoria en el driver o en los executors.

Cómo estructurar tu respuesta

  • Describe el movimiento físico de datos en cada estrategia.
  • Indica la condición de tamaño que hace viable el broadcast.
  • Explica cómo decide el planificador y en qué estadísticas se apoya.
  • Da el modo de fallo de hacer broadcast de algo demasiado grande.
  • Menciona el bucketing como forma de evitar shuffles de forma repetida.

Ejemplo de respuesta

Ejemplo hablado, en primera persona

Un shuffle join mueve ambos conjuntos de datos por la red para que las filas con la misma clave acaben en la misma partición, lo que implica serialización, volcado a disco y mucho tráfico de red. Un broadcast join evita todo eso enviando la tabla pequeña a cada executor y haciendo un hash join local, así que la tabla grande nunca se mueve. El planificador elige broadcast automáticamente cuando cree que un lado está por debajo del umbral de auto broadcast, que por defecto ronda los 10MB, y la palabra clave ahí es cree. Si las estadísticas están desactualizadas o el origen es un escaneo de ficheros sin estadísticas, se equivocará, así que o ejecuto ANALYZE o uso una hint explícita de broadcast. El modo de fallo merece conocerse: hacer broadcast de una tabla que en realidad pesa dos gigabytes la recolecta a través del driver y mata el job. Para joins que repetíamos cada hora sobre la misma clave, hacer bucketing de las tablas por esa clave eliminó el shuffle de forma permanente.

¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.

Mira cómo funciona

Preguntas de seguimiento que puedes esperar

  • ¿Qué ocurre en el driver durante un broadcast?
  • ¿Cómo evita el bucketing un shuffle y qué te cuesta?
  • ¿Cuándo ganaría un sort merge join a un hash join?

Más preguntas para Ingeniero de datos

Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.

Predecir mis preguntas

Ensaya las preguntas difíciles antes de que te las hagan

Practica con un copiloto en vivo y entra preparado. Un Session Pass de $29 te lleva a través de la entrevista sin suscripción y sin ataduras.

Consigue GhostPilot