我正在尝试使用以下代码从 Apache Airflow 运行 Glue 作业:
with TaskGroup(group_id= DAG_NAME + '_group', dag=dag) as tg:
for job in jobs_params:
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": {"PythonVersion": "3"},
"GlueVersion": "4.0", "WorkerType": "G.1X", "NumberOfWorkers": 2},
deferrable=False,
verbose=True,
dag=dag,
)
我已经尝试了一切,但我不断收到以下错误:
LAUNCH ERROR | Python 2 is not supported with this glue versionPlease refer logs for details.
我错过了什么?我不明白为什么它首先要尝试使用 Python2 创建工作。但即使使用
create_job_kwargs
问题也没有解决。
所以,我发现发生了什么事:当您第一次创建粘合作业时,重新运行 DAG 不会“覆盖”它。然后,因为我第一次运行 DAG 时没有参数
create_job_kwargs={"Command": {"Name":"glueetl", "PythonVersion": "3", "ScriptLocation": job["script_location"]},
"GlueVersion": "4.0", "WorkerType": "G.1X", "NumberOfWorkers": 2}.
它使用 Python 2 创建了一个 GlueJob。我必须删除作业并使用正确的参数重新运行 DAG,它成功了!