¿Cómo puedo solucionar el error “Command failed with exit code” (El comando falló con el código de salida) en AWS Glue?

Última actualización: 24/08/2021

Mi trabajo de extracción, transformación y carga (ETL) de AWS Glue falla con el error “Command failed with exit code” (El comando falló con el código de salida).

Descripción corta

Este error se produce cuando se cumplen una o varias de las siguientes condiciones:

  • El controlador o ejecutor del trabajo se quedó sin memoria.
  • El script ETL tiene problemas relacionados con el código.
  • El rol de IAM de AWS Glue carece de los permisos necesarios para acceder a la ruta del script.

Cuando se produce un error en la ejecución del trabajo por uno de los motivos anteriores, los registros de errores correspondientes se escriben en Amazon CloudWatch.

Resolución

Siga los pasos de solución de problemas adecuados según el caso de uso.

El trabajo falla con el error “Command failed with exit code 1” (El comando falló con el código de salida 1) y los registros de CloudWatch muestran el error “java.lang.OutOfMemoryError: Java heap space” (java.lang.OutOfMemoryError: espacio de pila de Java).

El error “java.lang.OutOfMemoryError: Java heap space” (java.lang.OutOfMemoryError: espacio de pila de Java) indica que un proceso de controlador del trabajo se está quedando sin memoria. Para averiguar si la excepción de falta de memoria (OOM) es causada por un controlador o un ejecutor, consulte Depuración de excepciones OOM y anomalías de trabajo. Para depurar la excepción OOM causada por el controlador, consulte ¿Cómo resuelvo el error “java.lang.OutOfMemoryError: espacio de pila Java” en AWS Glue? Para obtener más información, consulte Depuración de una excepción OOM del controlador.

El trabajo de AWS Glue falla con el error “Command failed with exit code 1” (El comando falló con el código de salida 1) y los registros de CloudWatch muestran el error “Container killed by YARN for exceeding memory limits” (Contenedor eliminado por YARN por exceder los límites de memoria).

Este error indica que el ejecutor provoca la excepción OOM. Para depurar la excepción OOM causada por el ejecutor, consulte Depuración de una excepción OOM del ejecutor.

El trabajo de AWS Glue falla con el error “Command failed with exit code 10” (El comando falló con el código de salida 10)

Verifique los registros de CloudWatch del trabajo para encontrar errores relacionados con los ejecutores. Este error suele producirse durante la fase aleatoria de Spark. Por ejemplo, el error se produce cuando se llama a la acción de repartición y el ejecutor aleatorio se queda sin memoria. Monitoree al ejecutor en busca de tareas atrasadas durante las operaciones de aleatorización de datos. Para obtener más información, consulte Depuración de etapas exigentes y tareas atrasadas.

El trabajo de AWS Glue falla con el error “Command failed with exit code 1” (El comando falló con el código de salida 10) y no comienza

Verifique los registros de trabajos de CloudWatch en busca de errores relacionados con Amazon Simple Storage Service (Amazon S3). Los registros de errores pueden tener un aspecto similar al siguiente:

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

Este error se produce cuando el rol de IAM de AWS Glue no tiene el permiso necesario para acceder al script de ETL de AWS Glue desde la ruta de acceso de Amazon S3. Revise los permisos necesarios para un rol de IAM de AWS Glue a fin de acceder a la ruta de ubicación del script. Asegúrese de que estos permisos necesarios estén adjuntos al rol.

El trabajo de AWS Glue falla con el error “Command failed with exit code 1” (El comando falla con el código de salida 1) y los registros de CloudWatch muestran el error “Exception in thread 'main' java.lang.NoSuchMethodError” (Excepción en el subproceso 'principal' java.lang.NoSuchMethodError) o “Exception in thread 'main' java.lang.ExceptionInInitializerError” (Excepción en el subproceso 'principal' java.lang.ExceptionInInitializerError).

Estas excepciones indican un conflicto de dependencia JAR o un conflicto de versión de Spark. Verifique si hay conflictos en el ejecutable JAR o en los archivos JAR adicionales pasados en el trabajo.

El trabajo de AWS Glue falla con el mensaje “Command failed with exit code 1” (El comando falla con el código de salida 1) y los registros de CloudWatch muestran el error “RuntimeError”.

El error “RuntimeError” indica que el Spark SQL pasado en el script ETL tiene una excepción semántica.

Por ejemplo:

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

Para solucionar este error, revise los registros de trabajos de AWS Glue en busca de errores de sintaxis SQL.

Nota: Este error puede deberse a diferentes motivos, como problemas de red. Por lo tanto, los pasos de resolución no se limitan a los provistos en el artículo.