Échec d’un travail Apache Spark avec l’exception maxResultSizeApache Spark job fails with maxResultSize exception

ProblèmeProblem

Un travail Spark échoue avec une maxResultSize exception :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)

CauseCause

Cette erreur se produit parce que la limite de taille configurée a été dépassée.This error occurs because the configured size limit was exceeded. La limite de taille s’applique au total des résultats sérialisés pour les actions Spark sur toutes les partitions.The size limit applies to the total serialized results for Spark actions across all partitions. Les actions Spark incluent des actions telles que collect() le nœud du pilote, toPandas() ou l’enregistrement d’un fichier volumineux dans le système de fichiers local du pilote.The Spark actions include actions such as collect() to the driver node, toPandas(), or saving a large file to the driver local file system.

SolutionSolution

Dans certains cas, vous devrez peut-être Refactoriser le code pour empêcher le nœud de pilote de collecter une grande quantité de données.In some situations, you might have to refactor the code to prevent the driver node from collecting a large amount of data. Vous pouvez modifier le code afin que le nœud du pilote collecte une quantité limitée de données ou augmente la taille de la mémoire de l’instance du pilote.You can change the code so that the driver node collects a limited amount of data or increase the driver instance memory size. Par exemple, vous pouvez appeler toPandas avec la flèche activée ou écrire des fichiers, puis lire ces fichiers au lieu de récupérer de grandes quantités de données sur le pilote.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.

Si cela est absolument nécessaire, vous pouvez affecter à la propriété spark.driver.maxResultSize une valeur <X>g supérieure à la valeur signalée dans le message d’exception dans la configuration du cluster Spark: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

La valeur par défaut est 4G.The default value is 4g. Pour plus d’informations, consultez Propriétés de l' applicationFor details, see Application Properties

Si vous définissez une limite élevée, des erreurs de mémoire insuffisante peuvent se produire dans le pilote (en fonction de spark.driver.memory la surcharge de mémoire des objets dans la 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). Définissez une limite appropriée pour éviter les erreurs de mémoire insuffisante.Set an appropriate limit to prevent out-of-memory errors.