Fehler bei Apache Spark-Auftrag aufgrund der Ausnahme maxResultSizeApache Spark job fails with maxResultSize exception

ProblemProblem

Ein Spark-Auftrag schlägt mit einer maxResultSize Ausnahme fehl:A Spark job fails with a maxResultSize exception:

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)

UrsacheCause

Dieser Fehler tritt auf, weil die konfigurierte Größenbeschränkung überschritten wurde.This error occurs because the configured size limit was exceeded. Die Größenbeschränkung gilt für die Gesamtanzahl der serialisierten Ergebnisse für Spark-Aktionen für alle Partitionen.The size limit applies to the total serialized results for Spark actions across all partitions. Zu den Spark-Aktionen gehören Aktionen wie z collect() . b. der Treiber Knoten toPandas() oder das Speichern einer großen Datei im lokalen Dateisystem des Treibers.The Spark actions include actions such as collect() to the driver node, toPandas(), or saving a large file to the driver local file system.

LösungSolution

In einigen Situationen müssen Sie möglicherweise den Code umgestalten, um zu verhindern, dass der Treiber Knoten eine große Datenmenge sammelt.In some situations, you might have to refactor the code to prevent the driver node from collecting a large amount of data. Sie können den Code so ändern, dass der Treiber Knoten eine begrenzte Menge an Daten sammelt oder die Arbeitsspeicher Größe der Treiber Instanz vergrößert.You can change the code so that the driver node collects a limited amount of data or increase the driver instance memory size. Sie können z. b toPandas . mit Pfeil aktiviert oder Dateien schreiben und diese Dateien dann lesen, anstatt große Datenmengen zurück an den Treiber zu sammeln.For example you can call toPandas with Arrow enabled or writing files and then read those files instead of collecting large amounts of data back to the driver.

Wenn dies unbedingt erforderlich ist, können Sie die-Eigenschaft spark.driver.maxResultSize auf einen <X>g höheren Wert als den in der Ausnahme Meldung in der Spark-Cluster Konfiguration gemeldeten Wert festlegen:If absolutely necessary you can set the property spark.driver.maxResultSize to a value <X>g higher than the value reported in the exception message in the cluster Spark configuration:

spark.driver.maxResultSize <X>g

Der Standardwert ist 4G.The default value is 4g. Weitere Informationen finden Sie unter Anwendungseigenschaften .For details, see Application Properties

Wenn Sie eine hohe Grenze festgelegt haben, können Fehler aufgrund von nicht genügend Arbeitsspeicher im Treiber auftreten (abhängig von spark.driver.memory und dem Arbeitsspeicher Aufwand von Objekten in der JVM).If you set a high limit, out-of-memory errors can occur in the driver (depending on spark.driver.memory and the memory overhead of objects in the JVM). Legen Sie eine geeignete Beschränkung fest, um Fehler aufgrund von nicht genügend Arbeitsspeicher zu vermeiden.Set an appropriate limit to prevent out-of-memory errors.