Az Apache Spark-feladat meghiúsul a maxResultSize kivétellel

Probléma

A Spark-feladat meghiúsul egy maxResultSize kivétellel:

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)

Ok

Ez a hiba a konfigurált méretkorlát túllépése miatt következik be. A méretkorlát az összes partíció Spark-műveletének összes szerializált eredményére vonatkozik. A Spark-műveletek olyan műveleteket tartalmaznak, mint az illesztőprogram-csomópont, vagy egy nagy fájl mentése az illesztőprogram helyi collect()toPandas() fájlrendszerébe.

Megoldás

Bizonyos esetekben előfordulhat, hogy újra kell újra kell méretezni a kódot, hogy az illesztőprogram-csomópont ne gyűjtsön nagy mennyiségű adatot. Módosíthatja a kódot úgy, hogy az illesztőprogram-csomópont korlátozott mennyiségű adatot gyűjtsön, vagy növelje az illesztőprogram-példány memóriaméretét. Ha például a nyíl engedélyezve van, vagy fájlokat ír, akkor a rendszer például beolvassa ezeket a fájlokat ahelyett, hogy nagy mennyiségű adatot gyűjtenének vissza az toPandas illesztőnek.

Ha feltétlenül szükséges, beállíthatja a tulajdonságot egy olyan értékre, amely magasabb, mint a fürt Spark-konfigurációjában található spark.driver.maxResultSize<X>gspark.driver.maxResultSizejelentett érték:

spark.driver.maxResultSize <X>g

Az alapértelmezett érték 4g. Részletekért lásd: Alkalmazástulajdonságok

Ha magas korlátot ad meg, memóriaon nem található hibák léphetnek fel az illesztőprogramban (a JVM-objektumok memóriaterhelésétől és a spark.driver.memory memóriaterheléstől függően). Állítson be egy megfelelő korlátot, hogy ne ússa meg a nincs memóriahibák számát.