C'est du data skew : une clé concentre une part disproportionnée des lignes, donc une seule partition fait l'essentiel du travail après un shuffle. Confirmez-le en regardant la distribution de la clé de jointure ou de regroupement. Corrigez-le en activant la gestion des jointures asymétriques d'adaptive query execution, en diffusant le petit côté s'il tient en mémoire, en salant la clé chaude sur plusieurs partitions, ou en filtrant et traitant les clés aberrantes à part.
Pourquoi les recruteurs posent cette question
Le skew est le problème de performance Spark le plus courant, et le chemin de diagnostic montre si vous avez réellement lu une Spark UI. Les recruteurs veulent que vous confirmiez le skew avec des données plutôt que de deviner, et que vous sachiez qu'ajouter des executors ou de la mémoire n'aide pas, parce que le goulot est une partition, pas la capacité totale.
Comment structurer votre réponse
- Nommez le skew et expliquez pourquoi une partition domine après un shuffle.
- Confirmez-le : distribution des clés et écart des durées de tâches dans le stage.
- Écartez la fausse solution consistant à ajouter des executors.
- Donnez les correctifs dans l'ordre : broadcast, jointure asymétrique AQE, salage, isolement de la clé.
- Mentionnez les nulls comme coupable caché fréquent.
Exemple de réponse
Une longue traîne sur une seule tâche signifie presque toujours du skew : après le shuffle, une clé a atterri dans une partition et cette partition détient l'essentiel des lignes. Je commence par le confirmer plutôt que le supposer : un group by sur la clé de jointure avec un count, et un coup d'oeil au stage dans la Spark UI, où la durée max de tâche et la taille de shuffle read écrasent la médiane. Ajouter des executors ne change rien, parce que le travail n'est pas réparti. Le correctif dépend de la forme du problème. Si l'autre côté de la jointure est petit, diffusez-le et supprimez complètement le shuffle. S'il est vraiment gros des deux côtés, adaptive query execution peut découper automatiquement les partitions asymétriques, et au-delà je sale : j'ajoute un suffixe aléatoire à la clé chaude, je réplique le petit côté sur ces sels, je joins, puis j'agrège. Celui qui piège les gens, ce sont les nulls. Nous avions une clé de jointure nulle sur environ 40% des lignes, qui hachaient toutes vers la même partition, et filtrer les nulls avant la jointure a réglé le problème d'un coup.
Vous passez cet entretien bientôt ? GhostPilot écoute votre appel en direct, repère la question dès qu'elle est posée et affiche une réponse structurée à l'écran en temps réel. Essayez-le lors de votre prochain entretien blanc, ou prenez un Session Pass à $29, sans abonnement, pour le jour J.
Voir comment ça marcheQuestions de relance à prévoir
- Comment adaptive query execution détecte-t-il une partition asymétrique ?
- Quel est le risque de diffuser une table trop volumineuse ?
- Comment saleriez-vous une jointure sans changer les résultats ?
Autres questions pour ingénieur data
Votre recruteur posera sa propre version de celle-ci. Collez votre véritable fiche de poste dans le Question Predictor gratuit et obtenez les 20 questions que ce poste a le plus de chances de poser, avec ce que chacune cherche vraiment à sonder.
Prédire mes questions