Pregunta de entrevista para Ingeniero de datos

Una tarea de Spark corre durante una hora mientras el resto termina en segundos. ¿Qué está pasando y cómo lo arreglas?

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

Respuesta rápida

Eso es data skew: una clave concentra una proporción desmedida de las filas, así que una sola partición hace casi todo el trabajo después del shuffle. Confírmalo mirando la distribución de la clave de join o de agrupación. Arréglalo activando el manejo de skew join de adaptive query execution, haciendo broadcast del lado pequeño si cabe, salando la clave caliente entre varias particiones, o filtrando y procesando aparte las claves atípicas.

Por qué lo preguntan los entrevistadores

El skew es el problema de rendimiento más común de Spark, y la ruta de diagnóstico revela si de verdad has leído una Spark UI. Los entrevistadores quieren que confirmes el skew con datos en vez de adivinar, y que sepas que subir ejecutores o memoria no ayuda porque el cuello de botella es una partición, no la capacidad total.

Cómo estructurar tu respuesta

  • Nombra el skew y explica por qué una partición domina después del shuffle.
  • Confírmalo: mira la distribución de la clave y la dispersión de duración de tareas en la etapa.
  • Descarta el falso arreglo de simplemente añadir ejecutores.
  • Da los arreglos en orden: broadcast, skew join de AQE, salting, aislar la clave.
  • Menciona los nulos como culpable oculto frecuente.

Ejemplo de respuesta

Ejemplo hablado, en primera persona

Una cola larga en una sola tarea casi siempre significa skew: después del shuffle, una clave cayó en una partición y esa partición tiene la mayoría de las filas. Primero lo confirmo en vez de asumirlo, así que hago un group by sobre la clave de join con un count, y miro la etapa en la Spark UI donde la duración máxima de tarea y el tamaño de lectura de shuffle aplastan a la mediana. Tirarle ejecutores no hace nada, porque el trabajo no está distribuido. El arreglo depende de la forma. Si el otro lado del join es pequeño, hazle broadcast y te saltas el shuffle por completo. Si de verdad es grande por ambos lados, adaptive query execution puede dividir automáticamente las particiones sesgadas, y más allá de eso salo: añado un sufijo aleatorio a la clave caliente, replico el lado pequeño entre esos valores de sal, hago el join y luego agrego. El que pilla a la gente es el de los nulos. Teníamos una clave de join que era nula en torno al 40% de las filas, todas las cuales hasheaban a la misma partición, y filtrar los nulos antes del join lo arregló de golpe.

¿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

  • ¿Cómo detecta adaptive query execution una partición sesgada?
  • ¿Cuál es el riesgo de hacer broadcast de una tabla demasiado grande?
  • ¿Cómo salarías un join sin cambiar los resultados?

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