You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Glue任务报Command failed with exit code 10错误,如何定位故障点?

Glue 2.0 Python任务无Traceback报错定位方案

1. 升级日志采集粒度,补全缺省的日志输出

在任务的作业参数中添加以下配置,开启更细粒度的日志输出:

  • 添加配置项--continuous-log-logLevel,值设为DEBUG,开启全链路日志打印
  • 添加Spark配置--conf spark.executor.logs.rolling.strategy=time,保证executor崩溃前的日志不会被滚动覆盖
  • 开启Python侧的异常栈强制输出,在脚本头部添加如下代码:
import faulthandler
faulthandler.enable()

该配置可以在Python进程意外崩溃时输出底层的错误栈。

2. 优先查看Executor侧的CloudWatch日志

主进程日志中提示Error Traceback is not available,说明Driver节点没有收到Worker节点的报错信息,需要直接到对应executor的日志流中找真实报错:

  • 进入CloudWatch日志控制台,找到日志组/aws-glue/jobs/executors
  • 搜索对应任务的运行ID,查看所有executor日志流中的ERROR级日志,通常可以直接找到Python脚本的真实报错,比如依赖缺失、UDF运行异常、数据格式不兼容等

3. 分段复现缩小故障范围

如果日志中还是没有明确报错,将脚本逻辑拆分为三个阶段逐段验证:

  • 第一阶段仅保留数据读取逻辑,拉取少量样本数据运行,排除数据源访问、格式解析类问题
  • 第二阶段仅保留数据转换逻辑,重点测试自定义UDF、聚合、join等涉及shuffle的操作:
    • 若用到普通UDF,单独传入边界值(空值、特殊字符、超长字符串)测试逻辑兼容性
    • 若用到pandas UDF,确认依赖的pandas、pyarrow版本和Glue 2.0环境兼容,Glue 2.0默认搭载Python 3.7、pyarrow 0.15.1,自行安装高版本依赖极容易触发worker无征兆崩溃
  • 第三阶段仅保留数据写入逻辑,排除目标端权限、配额、格式兼容类问题

4. 手动添加异常捕获逻辑

在所有核心逻辑块外层增加try-except捕获,强制打印异常栈:

import traceback

try:
    # 业务逻辑代码
    df = df.withColumn("calc_col", custom_udf(df["raw_col"]))
    df.write.format("parquet").save("s3://your-target-path/")
except Exception as e:
    print(f"业务执行报错,错误信息:{str(e)}")
    print(f"完整异常栈:{traceback.format_exc()}")
    raise

打印的内容会直接输出到CloudWatch日志中,可直接定位到报错的代码行。

内容的提问来源于stack exchange,提问作者Ankit Goel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 06:12:01