升级到Airflow 2后Cloud Composer上DataflowTemplateOperator作业失败问题
问题根因
Airflow 2对应的apache-airflow-providers-google依赖包升级后,DataflowTemplateOperator新增了顶层location参数,Operator执行时会自动将该参数值注入到Dataflow作业提交参数中,和你在dataflow_default_options里手动配置的region/location参数形成互斥冲突,因此抛出二者同时存在的报错。
正确配置方案
- 第一步:完全删除
dataflow_default_options中的region或location配置项,不要在作业参数里手动指定区域 - 第二步:直接在
DataflowTemplateOperator的顶层参数中添加location="us-east1"配置,参考代码如下:
from airflow.providers.google.cloud.operators.dataflow import DataflowTemplateOperator jdbc_to_bq_task = DataflowTemplateOperator( task_id="jdbc_to_bq_task", template="你的JDBC转BigQuery模板路径", location="us-east1", # 新增顶层参数指定作业运行区域 dataflow_default_options={ 'gcpTempLocation': 'gs://us-east1-xxxx/tmp/', 'machineType': 'n2-standard-2', 'project': 'xxxx', 'runner': 'DataflowRunner' # 移除原来的region配置 }, # 原有parameters、gcp_conn_id等其他参数保持不变 )
- 第三步:如果需要全局统一配置所有Dataflow作业的区域,可在Airflow控制台的Google Cloud连接配置中修改
Extra字段,添加"location": "us-east1",无需每个Operator单独指定。
验证方式
作业提交后在Dataflow控制台查看作业的区域属性,确认已调度到us-east1运行即可。
内容的提问来源于stack exchange,提问作者sacoder
相关产品推荐
相关产品推荐

