Apache Spark-jobbet misslyckas med undantaget maxResultSize

Problem

Ett Spark-jobb misslyckas med ett maxResultSize undantag:

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)

Orsak

Det här felet beror på att den konfigurerade storleksgränsen överskreds. Storleksgränsen gäller för det totala serialiserade resultatet för Spark-åtgärder över alla partitioner. Spark-åtgärderna omfattar åtgärder som collect() till exempel drivrutinsnoden, toPandas() , eller att spara en stor fil i det lokala drivrutinsfilsystemet.

Lösning

I vissa situationer kan du behöva omstrukturera koden för att förhindra att drivrutinsnoden samlar in en stor mängd data. Du kan ändra koden så att drivrutinsnoden samlar in en begränsad mängd data eller ökar minnesstorleken för drivrutinsinstansen. Du kan till exempel anropa med Pil aktiverat eller skriva filer och sedan läsa filerna i stället för att samla in stora toPandas mängder data tillbaka till drivrutinen.

Om det är absolut nödvändigt kan du ange egenskapen till ett värde som är högre än det värde som rapporteras spark.driver.maxResultSize<X>g i undantagsmeddelandet i spark.driver.maxResultSize

spark.driver.maxResultSize <X>g

Standardvärdet är 4g. Mer information finns i Programegenskaper

Om du anger en hög gräns kan minnesfel uppstå i drivrutinen (beroende på och minnesanvändningen för objekt i spark.driver.memory JVM). Ange en lämplig gräns för att förhindra minnesfel.