¿Cómo soluciono el error «Error de comando con el código de salida» en AWS Glue?

6 minutos de lectura
0

Mi trabajo de AWS Glue no funciona y muestra el error «Error de comando con el código de salida».

Descripción breve

«Error de comando con el código de salida X» es un mensaje de error genérico que aparece cuando se cierra la aplicación AWS Glue. Este error se produce cuando se cumplen una o más de las siguientes condiciones:

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

Para investigar más a fondo este error, revise los registros y las métricas de Amazon CloudWatch.

Resolución

El trabajo de AWS Glue Spark falla y aparece el error «Error de comando con el código de salida 1» y los registros de CloudWatch muestran el error «java.lang.OutOfMemoryError: espacio en el montón de Java»

Este error de AWS Glue indica que un proceso del controlador o ejecutor del trabajo se está quedando sin memoria. Para comprobar si un controlador o ejecutor está causando la excepción de falta de memoria (OOM), revise las métricas de CloudWatch para glue.driver.jvm.heap.usage y glue.executorID.heap.usage. Para obtener más información, consulte Supervisión de AWS Glue mediante métricas de Amazon CloudWatch.

Para solucionar una excepción de OOM provocada por el controlador, consulte Cómo se resuelve el error «java.lang.OutOfMemoryError: espacio en el montón de Java» en un trabajo de AWS Glue Spark? y Depurar una excepción de OOM del controlador.

Para solucionar problemas relacionados con una excepción de OOM causada por ejecutores, consulte Depurar una excepción de OOM del ejecutor.

Los ejecutores fallan con «Error de comando con el código de salida 1»

Este error se produce cuando se cancela un trabajo de AWS Glue. Este error también se produce cuando se cierran por la fuerza los ejecutores y se cierra el controlador. Consulte los registros de CloudWatch de AWS Glue para obtener más información sobre el error.

El trabajo de Spark de la versión 0.9/1.0 de AWS Glue produce un error con el error «Error de comando con el código de salida 1» y los registros de CloudWatch muestran el error «Contenedor eliminado por YARN por superar los límites de memoria»

Nota: Los trabajos de Spark de la versión 1.0 de AWS Glue llegaron al final del soporte. Actualice a Glue 2.0 o superior para mejorar el rendimiento.

Este error de AWS Glue indica que el ejecutor está causando una excepción de OOM. Para solucionar este error, consulte Depuración de una excepción de OOM del ejecutor.

El trabajo de AWS Glue Python Shell falla y aparece el error «Error de comando con el código de salida 1»

Este error indica que el rol de IAM de AWS Glue no tiene permiso para acceder al script de AWS Glue desde la ruta de Amazon Simple Storage Service (Amazon S3). Revise los permisos que debe tener el rol de IAM de AWS Glue para acceder a la ruta de ubicación del script. A continuación, adjunte estos permisos al rol de IAM.

El trabajo de AWS Glue falla con el error «Error de comando con el código de salida 1» y no se inicia

Consulte los registros de trabajos de CloudWatch para ver si hay errores relacionados con Amazon S3. En los registros, es posible que reciba un error 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 permiso para acceder al script ETL de AWS Glue desde la ruta de Amazon S3. Revise los permisos que debe tener el rol de IAM de AWS Glue para acceder a la ruta de ubicación del script. A continuación, adjunte estos permisos al rol de IAM.

En ocasiones, el trabajo de AWS Glue falla con el mensaje «Error de comando con el código de salida 10» y los registros de CloudWatch muestran un error, incluso con los permisos de IAM y de bucket de S3 correctos.

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

Este error de AWS Glue se produce en las versiones 3.0 o 4.0 de AWS Glue. Este error se produce cuando utiliza la configuración de seguridad de AWS Glue, pero la política de bucket de S3 deniega el objeto se:putObject no cifrado.

Para resolver este problema, ejecute job.init() al principio del script para que la configuración de seguridad de AWS Glue entre en vigor. Si inicia la sesión de Spark antes que job.init(), se anulan las propiedades de configuración de seguridad de Spark y se produce el error.

Vea el siguiente ejemplo:

job = Job(glueContext)
job.init(args["JOB_NAME"], args)

#Use one of the following depending on whether Spark configuration is being set or not
spark = glueContext.spark_session
spark = glueContext.spark_session.builder.enableHiveSupport().config("hive.exec.dynamic.partition","true").config("hive.exec.dynamic.partition.mode", "nonstrict").getOrCreate()

Para obtener más información sobre la configuración de seguridad de AWS Glue, consulte Cifrar datos escritos por rastreadores, trabajos y puntos de conexión de desarrollo.

El trabajo de AWS Glue falla y aparece el error «Error de comando con el código de salida X» y los archivos JAR se pasan al trabajo

Es posible que observe uno de los siguientes errores en los registros de CloudWatch:

«Excepción en el hilo “principal” java.lang.NoSuchMethodError»

«Excepción en el hilo “principal” java.lang.ExceptionInInitializerError»

Estos errores indican un conflicto de dependencia de JAR o un conflicto de versión de Spark. Compruebe si hay conflictos en el ejecutable JAR y en los archivos JAR adicionales que se pasan en el trabajo. Si está pasando varios archivos JAR, elimine un archivo JAR cada vez y vuelva a ejecutar el trabajo de AWS Glue. De esta forma, puede aislar el archivo que está causando el problema.


Información relacionada

Supervisión de trabajos mediante la interfaz de usuario web de Apache Spark

¿Por qué mi trabajo de ETL de AWS Glue no funciona y aparece el error «Contenedor eliminado por YARN por superar los límites de memoria»?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 años