Configuration 如何在Airflow中使用配置文件
在“气流”中,我们创建了几个DAG。其中一些共享公共属性,例如从中读取文件的目录。目前,这些房地产在每个单独的DAG中都列为一个房地产,这在将来显然会成为问题。如果目录名要更改,我们必须进入每个DAG并更新这段代码(甚至可能缺少一段) 我正在研究创建某种配置文件,当需要某个属性时,可以将其解析为气流,并由各种DAG使用,但我似乎找不到任何关于如何执行此操作的文档或指南。我能找到的最多的是关于设置连接ID的文档,但这不符合我的用例 我的帖子的问题是,是否有可能实现上述场景以及如何实现Configuration 如何在Airflow中使用配置文件,configuration,airflow,Configuration,Airflow,在“气流”中,我们创建了几个DAG。其中一些共享公共属性,例如从中读取文件的目录。目前,这些房地产在每个单独的DAG中都列为一个房地产,这在将来显然会成为问题。如果目录名要更改,我们必须进入每个DAG并更新这段代码(甚至可能缺少一段) 我正在研究创建某种配置文件,当需要某个属性时,可以将其解析为气流,并由各种DAG使用,但我似乎找不到任何关于如何执行此操作的文档或指南。我能找到的最多的是关于设置连接ID的文档,但这不符合我的用例 我的帖子的问题是,是否有可能实现上述场景以及如何实现 提前感谢。根
提前感谢。根据您的设置,有几种方法可以实现这一点:
- 可以使用DagFactory类型的方法,其中有一个生成DAG的函数。你可以找到一个这样的例子
- 您可以将JSON配置存储为,并通过该配置进行解析以生成DAG。您可以在Admin->Variables中存储类似的内容:
[{
“表”:“用户”,
“schema”:“app_one”,
“s3_桶”:“etl_桶”,
“s3密钥”:“应用程序用户”,
“红移连接id”:“postgres\u默认”},
{
“表”:“用户”,
“模式”:“应用程序二”,
“s3_桶”:“etl_桶”,
“s3_键”:“应用程序_两个用户”,
“红移连接id”:“postgres\u默认”}]
您的DAG可以生成为:
sync_config = json.loads(Variable.get("sync_config"))
with dag:
start = DummyOperator(task_id='begin_dag')
for table in sync_config:
d1 = RedshiftToS3Transfer(
task_id='{0}'.format(table['s3_key']),
table=table['table'],
schema=table['schema'],
s3_bucket=table['s3_bucket'],
s3_key=table['s3_key'],
redshift_conn_id=table['redshift_conn_id']
)
start >> d1
类似地,您可以将该配置存储为本地文件,并像打开任何其他文件一样打开它。请记住,最好的答案取决于您的基础架构和用例