Das ist Data Skew: ein Key hält einen unverhältnismäßigen Anteil der Zeilen, also erledigt nach dem Shuffle eine einzige Partition die meiste Arbeit. Bestätige es, indem du die Verteilung des Join- oder Group-Keys prüfst. Behebe es, indem du die Skew-Join-Behandlung von Adaptive Query Execution aktivierst, die kleine Seite broadcastest, falls sie passt, den heißen Key über mehrere Partitionen saltest oder die Ausreißer-Keys separat verarbeitest.
Warum Interviewer das fragen
Skew ist das häufigste Spark-Performanceproblem, und der Diagnoseweg zeigt, ob du tatsächlich mal eine Spark UI gelesen hast. Interviewer wollen, dass du den Skew mit Daten bestätigst statt zu raten, und dass du weißt, dass mehr Executors oder Memory nicht helfen, weil der Engpass eine Partition ist und nicht die Gesamtkapazität.
So baust du deine Antwort auf
- Nenn Skew und erklär, warum nach einem Shuffle eine Partition dominiert.
- Bestätig es: Key-Verteilung und Streuung der Task-Laufzeiten im Stage prüfen.
- Schließ die Nicht-Lösung aus, einfach Executors nachzuwerfen.
- Nenn die Fixes der Reihe nach: Broadcast, AQE Skew Join, Salting, Key isolieren.
- Erwähn Nullwerte als häufigen versteckten Übeltäter.
Beispielantwort
Ein langer Ausläufer bei einem Task heißt fast immer Skew: nach dem Shuffle ist ein Key in einer Partition gelandet und diese Partition hat die meisten Zeilen. Zuerst bestätige ich das, statt es anzunehmen, also ein Group by auf dem Join-Key mit Count und ein Blick auf den Stage in der Spark UI, wo maximale Task-Dauer und Shuffle-Read-Größe den Median weit übertreffen. Executors draufzuwerfen bringt nichts, weil die Arbeit nicht verteilt ist. Der Fix hängt von der Form ab. Ist die andere Seite des Joins klein, broadcaste sie und spar dir den Shuffle komplett. Sind beide Seiten wirklich groß, kann Adaptive Query Execution schiefe Partitionen automatisch splitten, und darüber hinaus salte ich: ein zufälliges Suffix an den heißen Key, die kleine Seite über diese Salts replizieren, joinen, dann aggregieren. Woran Leute hängen bleiben, sind Nullwerte. Wir hatten einen Join-Key, der für rund 40% der Zeilen null war, und alle hashten in dieselbe Partition. Nullwerte vor dem Join zu filtern hat es sofort behoben.
Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.
So funktioniert esNachfragen, mit denen du rechnen solltest
- Wie erkennt Adaptive Query Execution eine schiefe Partition?
- Was ist das Risiko, wenn du eine zu große Tabelle broadcastest?
- Wie würdest du einen Join salten, ohne die Ergebnisse zu verändern?
Weitere Fragen für Data Engineer
Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.
Meine Fragen vorhersagen