如何在不使用 GUI 的情况下创建、更新和删除气流变量?
How to create, update and delete airflow variables without using the GUI?
我一直在学习气流并为 ETL 管道编写 DAG。它涉及使用 AWS 环境(S3、Redshift)。它处理在将数据存储在 redshift 中之后将数据从一个存储桶复制到另一个存储桶。我将存储桶名称和前缀作为变量存储在气流中,您必须为此打开 GUI 并手动添加它们。
在以下选项中,哪个是业内最安全、使用最广泛的做法
- 我们可以使用
airflow.cfg
来存储我们的变量(存储桶名称)并在我们的 DAG 中访问它们吗?
- 使用自定义配置文件并使用
configparser
解析其内容
- 使用 GUI 添加变量
总而言之:您可以使用 airflow cli 从 json 文件执行变量导入操作。您可以使用以下命令 airflow variables -i
[1] 并通过气流 CICD 管道构建它或手动 运行 它。那应该处理 insert/update 案例。对于删除,你可以明确地调用airflow variables -x
,我认为目前你不能在气流中进行批量删除。
您可以拥有一个 JSON 文件,其格式如下所示,其中包含键值:
{
"foo1": "bar1",
"foo2": "bar2"
}
这里需要注意一点:您可以将变量视为键值存储,因此请确保导入时没有重复的键(否则您可能会覆盖它并产生意外结果)
[1] airflow.apache.org/cli.html#variables
Airflow 使用 SQLAlchemy
models 来处理 Connection
、Variable
、Pool
等实体。此外,它不会试图隐藏它 -用户以任何方式,这意味着您可以通过利用底层的 SQLAlchemy 魔法来自由地操纵这些实体。
如果您打算以编程方式修改变量(在 Airflow 任务中),请从
中获取灵感
其他有用的参考链接
我一直在学习气流并为 ETL 管道编写 DAG。它涉及使用 AWS 环境(S3、Redshift)。它处理在将数据存储在 redshift 中之后将数据从一个存储桶复制到另一个存储桶。我将存储桶名称和前缀作为变量存储在气流中,您必须为此打开 GUI 并手动添加它们。
在以下选项中,哪个是业内最安全、使用最广泛的做法
- 我们可以使用
airflow.cfg
来存储我们的变量(存储桶名称)并在我们的 DAG 中访问它们吗? - 使用自定义配置文件并使用
configparser
解析其内容
- 使用 GUI 添加变量
总而言之:您可以使用 airflow cli 从 json 文件执行变量导入操作。您可以使用以下命令 airflow variables -i
[1] 并通过气流 CICD 管道构建它或手动 运行 它。那应该处理 insert/update 案例。对于删除,你可以明确地调用airflow variables -x
,我认为目前你不能在气流中进行批量删除。
您可以拥有一个 JSON 文件,其格式如下所示,其中包含键值:
{
"foo1": "bar1",
"foo2": "bar2"
}
这里需要注意一点:您可以将变量视为键值存储,因此请确保导入时没有重复的键(否则您可能会覆盖它并产生意外结果)
[1] airflow.apache.org/cli.html#variables
Airflow 使用 SQLAlchemy
models 来处理 Connection
、Variable
、Pool
等实体。此外,它不会试图隐藏它 -用户以任何方式,这意味着您可以通过利用底层的 SQLAlchemy 魔法来自由地操纵这些实体。
如果您打算以编程方式修改变量(在 Airflow 任务中),请从
其他有用的参考链接