Apache Spark-taak is mislukt met maxResultSize-uitzondering

Probleem

Een Spark-taak mislukt met een maxResultSize uitzondering:

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)

Oorzaak

Deze fout treedt op omdat de geconfigureerde groottelimiet is overschreden. De groottelimiet is van toepassing op het totale aantal geseraliseerde resultaten voor Spark-acties voor alle partities. De Spark-acties omvatten acties zoals naar het stuurprogramma-knooppunt, of het opslaan van een groot bestand naar het lokale collect() toPandas() bestandssysteem van het stuurprogramma.

Oplossing

In sommige gevallen moet u de code mogelijk herfactoreren om te voorkomen dat het stuurprogramma-knooppunt een grote hoeveelheid gegevens verzamelt. U kunt de code wijzigen zodat het stuurprogramma-knooppunt een beperkte hoeveelheid gegevens verzamelt of de geheugengrootte van het stuurprogramma-exemplaar vergroten. U kunt bijvoorbeeld aanroepen met Pijl ingeschakeld of bestanden schrijven en deze bestanden vervolgens lezen in plaats van grote hoeveelheden gegevens terug te verzamelen toPandas naar het stuurprogramma.

Indien absoluut noodzakelijk kunt u de eigenschap instellen op een waarde die hoger is dan de waarde die wordt gerapporteerd in het uitzonderingsbericht spark.driver.maxResultSize <X>g in de Spark-clusterconfiguratie:

spark.driver.maxResultSize <X>g

De standaardwaarde is 4g. Zie Toepassingseigenschappen voor meer informatie

Als u een hoge limiet in stelt, kunnen er out-of-memory fouten optreden in het stuurprogramma (afhankelijk van en de geheugenoverhead van spark.driver.memory objecten in de JVM). Stel een geschikte limiet in om fouten met niet-geheugen te voorkomen.