如何排查 AWS Glue 中的“Command failed with exit code”错误?

上次更新时间:2021-08-24

我的 AWS Glue 提取、转换和加载 (ETL) 任务失败,并提示错误“Command failed with exit code”。

简短描述

当满足以下任一条件时,您会收到此错误:

  • 您任务中的驱动程序或执行程序内存不足。
  • 您的 ETL 脚本存在与代码相关的问题。
  • AWS Glue IAM 角色缺乏访问脚本路径所需的权限。

如果由于上述任一原因导致任务运行失败,相应的错误日志会写入 Amazon CloudWatch。

解决方案

根据您的使用案例使用适当的故障排除步骤。

任务运行失败,提示错误“Command failed with exit code 1”,并且 CloudWatch Logs 显示错误“java.lang.OutOfMemoryError: Java heap space”。

“java.lang.OutOfMemoryError: Java heap space”错误表示任务中的驱动程序进程耗尽内存。要了解内存不足 (OOM) 异常是由驱动程序还是执行程序引起,请参阅 调试 OOM 异常和任务异常。要调试由驱动程序引起的 OOM 异常,请参阅 如何解决 AWS Glue 中的“java.lang.OutOfMemoryError: Java heap space”错误? 有关详细信息,请参阅 调试驱动程序 OOM 异常

AWS Glue 任务失败,提示错误“Command failed with exit code 1”,并且 CloudWatch logs 显示错误“Container killed by YARN for exceeding memory limits”

此错误表示执行程序引起 OOM 异常。要调试由执行程序引起的 OOM 异常,请参阅调试执行程序 OOM 异常

AWS Glue 任务失败并提示错误“Command failed with exit code 10”

检查任务的 CloudWatch logs 以查找与执行程序有关的错误。此错误通常发生在 Spark 的随机阶段。例如,当调用重新分区操作以及随机执行程序内存不足时,就会发生错误。在数据随机操作期间,监控 Straggler 任务的执行程序。有关更多信息,请参阅调试需求阶段和 Straggler 任务

AWS Glue 任务失败,提示错误“Command failed with exit code 1”,并且无法启动

检查 CloudWatch 任务日志,了解与 Amazon Simple Storage Service (Amazon S3) 相关的错误。错误日志可能类似于以下内容:

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

当 AWS Glue IAM 角色没有从 Amazon S3 路径访问 AWS Glue ETL 脚本所需的权限时,此错误会发生。查看 AWS Glue IAM 角色访问脚本位置路径所需的权限。确保这些必要权限已附加到此角色。

AWS Glue 任务失败,提示错误“Command failed with exit code 1”,并且 CloudWatch logs 显示错误“Exception in thread "main" java.lang.NoSuchMethodError”或“Exception in thread "main" java.lang.ExceptionInInitializerError”

这些例外表示 JAR 依赖项冲突或 Spark 版本冲突。检查任务中传递的 JAR 可执行文件和/或额外 JAR 文件是否存在冲突。

AWS Glue 任务失败,提示“Command failed with exit code 1”,并且 CloudWatch logs 显示“RuntimeError”错误

“RuntimeError”错误表示在 ETL 脚本中传递的 Spark SQL 存在语义异常。

例如:

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

要排查此错误,请查看 AWS Glue 任务日志中的 SQL 语法错误。

注意:此错误可能由联网问题等不同原因引起。因此,解决方案步骤不限于此文章中所提供的步骤。