Error en el trabajo de Apache Spark con la excepción maxResultSize

Problema

Se produce un error en un trabajo de Spark con una maxResultSize excepción:

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)

Causa

Este error se produce porque se superó el límite de tamaño configurado. El límite de tamaño se aplica al total de resultados serializados para las acciones de Spark en todas las particiones. Las acciones de Spark incluyen acciones como collect() el nodo de controlador toPandas() o el almacenamiento de un archivo grande en el sistema de archivos local del controlador.

Solución

En algunas situaciones, puede que tenga que refactorizar el código para evitar que el nodo del controlador recopile una gran cantidad de datos. Puede cambiar el código para que el nodo de controlador recopile una cantidad limitada de datos o aumente el tamaño de la memoria de la instancia de controlador. Por ejemplo, puede llamar a toPandas con una flecha habilitada o escribir archivos y, a continuación, leer esos archivos en lugar de recopilar grandes cantidades de datos en el controlador.

Si es absolutamente necesario, puede establecer la propiedad en spark.driver.maxResultSize un valor <X>g mayor que el valor incluido en el mensaje de excepción en la configuración de Sparkde clúster:

spark.driver.maxResultSize <X>g

El valor predeterminado es 4G. Para obtener más información, consulte propiedades de la aplicación .

Si establece un límite alto, pueden producirse errores de memoria insuficiente en el controlador (dependiendo de spark.driver.memory y la sobrecarga de memoria de los objetos de la JVM). Establezca un límite adecuado para evitar errores de memoria insuficiente.