Eine Spark-Aufgabe
Wenn Sie eine zeitintensive Phase mit nur einer Aufgabe sehen, liegt wahrscheinlich ein Problem vor. Auch wenn diese eine Aufgabe ausgeführt wird, wird nur eine CPU genutzt und der Rest des Clusters befindet sich möglicherweise im Leerlauf. Dies geschieht in den folgenden Situationen am häufigsten:
- Teure UDF für kleine Daten
- Fensterfunktion ohne
PARTITION BY
-Anweisung - Lesen aus einem nicht teilbaren Dateityp. Dies bedeutet, dass die Datei nicht in mehreren Teilen gelesen werden kann, sodass eine einzige große Aufgabe vorliegt. Gzip ist ein Beispiel für einen unteilbaren Dateityp.
- Festlegen der Option
multiLine
beim Lesen einer JSON- oder CSV-Datei - Schemarückschluss einer großen Datei
- Verwendung von repartition(1) oder coalesce(1)