Comment résoudre l'erreur « Command failed with exit code » (Échec de la commande avec le code de sortie) dans AWS Glue ?

Dernière mise à jour : 24/08/2021

Ma tâche Extract-transform-load (ETL) AWS Glue échoue avec l'erreur « Command failed with exit code » (Échec de la commande avec le code de sortie).

Brève description

Cette erreur s'affiche lorsque une ou plusieurs des conditions suivantes sont remplies :

  • Le pilote ou l'exécuteur de votre tâche est à court de mémoire.
  • Votre script ETL présente des problèmes liés au code.
  • Le rôle IAM AWS Glue ne dispose pas des autorisations requises pour accéder au chemin du script.

Lorsque l'exécution de votre tâche échoue pour l'une des raisons qui précédent, les journaux d'erreurs respectifs sont écrits dans Amazon CloudWatch.

Résolution

Suivez les étapes de dépannage appropriées en fonction de votre cas d'utilisation.

La tâche avec l’erreur « Command failed with exit code 1 » (Échec de la commande avec le code de sortie 1) et les journaux CloudWatch contiennent l'erreur « java.lang.OutOfMemoryError: Java heap space » (java.lang.OutOfMemoryError : espace du tas Java)

L'erreur « java.lang.OutOfMemoryError: Java heap space » (java.lang.OutOfMemoryError : espace du tas Java) indique qu'un processus de pilote de votre tâche est à court de mémoire. Pour savoir si l'exception Out-of-Memory (OOM - mémoire insuffisante) est provoquée par un pilote ou un exécuteur, consultez Débogage des exceptions OOM et des anomalies de tâches. Pour déboguer l'exception OOM causée par le pilote, consultez Comment résoudre l'erreur « java.lang.OutOfMemoryError: Java heap space » (java.lang.OutOfMemoryError : espace du tas Java) dans AWS Glue ? Pour plus d'informations, consultez Débogage d'une exception OOM de pilote.

La tâche AWS Glue échoue avec l'erreur « Command failed with exit code 1 » (Échec de la commande avec le code de sortie 1) et les journaux CloudWatch contiennent l'erreur « Container killed by YARN for exceeding memory limits » (Conteneur arr^té par YARN pour avoir dépassé les limites de mémoire)

Cette erreur indique que l'exécuteur provoque l'exception OOM. Pour déboguer l'exception OOM causée par l'exécuteur, consultez Débogage d'une exception OOM de l'exécuteur.

La tâche AWS Glue échoue avec l'erreur « Command failed with exit code 10 » (Échec de la commande avec le code de sortie 10)

Vérifiez les journaux CloudWatch de la tâche pour repérer les erreurs liées aux exécuteurs. Cette erreur se produit généralement pendant l’étape de lecture aléatoire de Spark. Par exemple, l'erreur se produit lorsque l'action de répartition est appelée alors que la mémoire de l'exécuteur aléatoire est épuisée. Surveillez l'exécuteur et recherchez des tâches plus lentes pendant les opérations de réorganisation de données. Pour plus d'informations, consultez Débogage des étapes exigeantes et des tâches plus lentes.

La tâche AWS Glue échoue avec l'erreur « Command failed with exit code 1 » (Échec de la commande avec le code de sortie 1) et ne démarre pas

Recherchez dans les journaux des tâches CloudWatch les erreurs liées à Amazon Simple Storage Service (Amazon S3). Les journaux d'erreurs peuvent se présenter comme suit :

com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied' Request ID: xxxxxxxxxxxxx)

Cette erreur se produit lorsque le rôle IAM AWS Glue ne dispose pas de l'autorisation requise pour accéder au script ETL AWS Glue à partir du chemin Amazon S3. Vérifiez les autorisations nécessaires à un rôle IAM AWS Glue pour accéder au chemin du script. Assurez-vous que les autorisations nécessaires sont attachées au rôle.

La tâche AWS Glue échoue avec l'erreur « Command failed with exit code 1 » (Échec de la commande avec le code de sortie 1) et les journaux CloudWatch contiennent l'erreur « Exception in thread "main" java.lang.NoSuchMethodError » ou « Exception in thread "main” java.lang.ExceptionInInitializerError »

Ces exceptions indiquent un conflit de dépendance JAR ou de version Spark. Vérifiez la présence d’éventuels conflits dans l'exécutable JAR et/ou les autres fichiers JAR transmis dans la tâche.

La tâche AWS Glue échoue avec l'erreur « Command failed with exit code 1 » (Échec de la commande avec le code de sortie 1) et les journaux CloudWatch contiennent l'erreur « RuntimeError »

L'erreur « RuntimeError » indique que le SQL Spark transmis dans le script ETL comporte une exception sémantique.

Par exemple :

RuntimeError: FAILED: SemanticException [Error 10006]: Partition not found

Pour corriger cette erreur, recherchez les erreurs de syntaxe SQL dans les journaux des tâches AWS Glue.

Remarque : cette erreur peut se produire pour différentes raisons, notamment des problèmes réseau. Les étapes de résolution ne se limitent donc pas à celles de l'article.