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

使用Airflow GlueJobOperator创建Python3作业却报Python2不支持错误

问题分析与解决方案

核心原因

你遇到的问题大概率是以下两种情况之一:

  1. 同名Glue作业已存在:AWS Glue中已经有与job["name"]同名的作业,且该作业最初是用Python2配置的。Airflow的GlueJobOperator默认会复用现有作业配置而非覆盖,导致你指定的create_job_kwargs参数无法生效。
  2. create_job_kwargs参数结构不完整:Glue的Command配置需要明确指定作业类型(Name字段),缺失该字段可能触发系统默认使用旧的Python版本配置逻辑。

解决方案

方案1:删除现有同名Glue作业

登录AWS Glue控制台,找到对应名称的作业并删除,之后重新运行Airflow DAG。此时Airflow会按照你指定的create_job_kwargs参数创建全新的Glue作业,自动应用Python3配置。

方案2:强制更新现有作业配置

如果不想删除现有作业,在GlueJobOperator中添加update_job_kwargs参数,将配置同步到已有作业:

glue = GlueJobOperator(
    task_id=f'run_{job["name"]}',
    job_name=job["name"],
    script_location=job["script_location"],
    script_args=job["script_args"],
    aws_conn_id='glue_job_conn',
    region_name='us-east-1',
    iam_role_name="AWSGlueServiceRoleReadS3",
    create_job_kwargs={"Command": {"Name": "glueetl", "PythonVersion": "3"},
                        "GlueVersion": "4.0", "WorkerType": "G.1X", "NumberOfWorkers": 2},
    # 添加update_job_kwargs强制更新现有作业
    update_job_kwargs={"Command": {"Name": "glueetl", "PythonVersion": "3"},
                        "GlueVersion": "4.0", "WorkerType": "G.1X", "NumberOfWorkers": 2},
    deferrable=False,
    verbose=True,
    dag=dag,
)

注意:Command.Name需匹配作业类型:Spark ETL作业填glueetl,Python Shell作业填pythonshell。

方案3:升级Airflow亚马逊提供商版本

若使用的apache-airflow-providers-amazon版本较旧,可能存在参数传递的bug。升级到最新稳定版(如>=6.0.0)可解决这类问题:

pip install --upgrade apache-airflow-providers-amazon

内容的提问来源于stack exchange,提问作者Luis Felipe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 23:42:10