使用Airflow触发已有AWS Glue Job失败,请求排查
Airflow触发AWS Glue Job失败问题分析与解决
问题原因
报错信息明确指出JobUpdate.Command.ScriptLocation的值为None,不符合AWS Glue API的参数要求。原因是你使用的GlueJobOperator默认行为是:当检测到指定的Glue Job已存在时,会尝试更新该Job的配置,但你没有提供脚本位置参数,导致更新操作失败。而你的实际需求是触发已存在的Glue Job,而非创建或更新它。
解决方法
方案1:禁用自动更新Job(推荐)
在GlueJobOperator中添加update_job=False参数,让Operator跳过更新步骤,直接触发已存在的Job运行:
GlueJobOperator( job_name=glue_job_name, region_name=region_name, iam_role_name=glue_iam_role, task_id='glue_job_step', dag=dag, s3_bucket=bucket_name, update_job=False # 禁用Job更新逻辑 )
添加该参数后,Operator会直接调用AWS Glue的StartJobRun接口,无需修改原有Job的配置,完全匹配你的需求。
方案2:指定脚本位置(若需更新Job)
如果你确实需要更新Glue Job的配置,需补充script_location参数,指定Glue脚本在S3的完整路径:
GlueJobOperator( job_name=glue_job_name, region_name=region_name, iam_role_name=glue_iam_role, task_id='glue_job_step', dag=dag, s3_bucket=bucket_name, script_location=f's3://{bucket_name}/path/to/your/glue/script.py' # 填写实际脚本路径 )
内容的提问来源于stack exchange,提问作者Yiannis Constantinou
相关产品推荐
相关产品推荐

