Glue PySpark任务失败后CloudWatch指标glue.driver.aggregate.numFailedTasks未正确记录失败计数的问题排查
问题诊断与解决方案
看起来你遇到的核心问题是选的CloudWatch指标和任务失败类型不匹配,下面一步步给你拆解:
1. 为什么glue.driver.aggregate.numFailedTasks显示0?
这个指标的作用是统计Executor节点上执行的数据处理任务(比如分区数据计算的task)失败的数量,而你的任务是因为AnalysisException失败——这类错误属于Driver端的解析错误(比如表不存在、Schema不匹配、SQL语法错误等),Driver会直接终止整个任务,根本不会向Executor分发任何可执行的任务,所以自然不会产生"失败任务"的计数,指标值就是0。
2. 应该用哪个指标检测任务失败?
你需要改用glue.job.run.status这个指标,它专门用来监控Glue任务的整体运行状态:
- 取值说明:
0代表任务成功,1代表任务失败,2代表任务正在运行 - 这个指标会在任务结束时上报状态值,完全覆盖你需要的"任务失败"检测场景
3. 修正你的CloudWatch告警配置
调整后的配置建议:
- MetricName:
glue.job.run.status - JobName:
<MyGlueJobName>(保留你的具体Job名称) - JobRunId:
ALL(如果要监控该Job的所有运行实例) - Statistic:
Maximum或Latest(因为每个任务运行对应一个状态值,Sum在这里没有意义,Max/Latest能准确获取最新的状态) - Period: 1分钟(保持你的设置即可,确保能捕获任务结束的时间点)
- 告警条件: 当指标值等于
1时触发告警
4. 快速验证方法
你可以直接去CloudWatch控制台的Metrics > Glue > Job Metrics下,找到glue.job.run.status,筛选你的Job名称,查看最近那次失败运行对应的指标数据点,应该能看到值为1的记录,这就说明指标是正常上报的。
内容的提问来源于stack exchange,提问作者Stagg
相关产品推荐
相关产品推荐

