Fehler bei Apache Spark-Auftrag aufgrund der Ausnahme maxResultSize

Problem

Ein Spark-Auftrag schlägt mit einer Ausnahme maxResultSize fehl:

org.apache.spark.SparkException: Job aborted due to stage failure: Total size of serialized
results of XXXX tasks (X.0 GB) is bigger than spark.driver.maxResultSize (X.0 GB)

Ursache

Dieser Fehler tritt auf, weil das konfigurierte Größenlimit überschritten wurde. Die Größenbeschränkung gilt für die gesamten serialisierten Ergebnisse für Spark-Aktionen über alle Partitionen hinweg. Zu den Spark-Aktionen gehören Aktionen wie zum Treiberknoten oder zum Speichern einer großen Datei collect() im lokalen Dateisystem des toPandas() Treibers.

Lösung

In einigen Situationen müssen Sie den Code möglicherweise umgestalten, um zu verhindern, dass der Treiberknoten eine große Datenmenge sammelt. Sie können den Code so ändern, dass der Treiberknoten eine begrenzte Datenmenge erfasst oder die Arbeitsspeichergröße der Treiberinstanz erhöht. Sie können z. B. mit aktivierten Pfeilen aufrufen oder Dateien schreiben und diese Dateien dann lesen, anstatt große Datenmengen an den toPandas Treiber zurück zu sammeln.

Wenn dies unbedingt erforderlich ist, können Sie die -Eigenschaft auf einen Wert festlegen, der höher als der in der Ausnahmemeldung in der spark.driver.maxResultSize<X>g Spark-Konfiguration des spark.driver.maxResultSize

spark.driver.maxResultSize <X>g

Der Standardwert ist 4g. Weitere Informationen finden Sie unter Anwendungseigenschaften.

Wenn Sie eine hohe Grenze festlegen, können Fehler aufgrund von nicht genügend Arbeitsspeicher im Treiber auftreten (abhängig von und dem Arbeitsspeicheraufwand von Objekten spark.driver.memory in der JVM). Legen Sie einen geeigneten Grenzwert fest, um Fehler mit nicht genügend Arbeitsspeicher zu vermeiden.