gpt4 book ai didi

airflow - 在 Airflow 上部署 dag 文件的有效方法

转载 作者:行者123 更新时间:2023-12-03 07:34:25 25 4
gpt4 key购买 nike

将新 dag 部署到 Airflow 时是否遵循任何最佳实践?

我在谷歌论坛上看到一些评论,指出 dags 保存在 GIT 存储库中,并且定期同步到 Airflow 集群中的本地位置。
关于这种方法,我有一些的问题

  • 我们是否为不同的环境维护单独的 dag 文件? (测试.生产)
  • 如果新版本出现错误,如何处理 ETL 回滚到旧版本的情况?

    非常感谢这里的任何帮助。如果您需要更多详细信息,请告诉我?

  • 最佳答案

    以下是我们团队的管理方式。

    首先在命名约定方面,我们的每个 DAG 文件名 都与 DAG 本身内容(包括 DAG 版本)中的 DAG Id 相匹配。这很有用,因为最终您在 Airflow UI 中看到的是 DAG Id,因此您可以准确地知道每个 DAG 后面使用了哪个文件。

    像这样的 DAG 示例:

    from airflow import DAG
    from datetime import datetime, timedelta

    default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': datetime(2017,12,05,23,59),
    'email': ['me@mail.com'],
    'email_on_failure': True
    }

    dag = DAG(
    'my_nice_dag-v1.0.9', #update version whenever you change something
    default_args=default_args,
    schedule_interval="0,15,30,45 * * * *",
    dagrun_timeout=timedelta(hours=24),
    max_active_runs=1)
    [...]

    DAG 文件的名称为:my_nice_dag-v1.0.9.py

    • 我们所有的 DAG 文件都存储在 Git 存储库中(除其他外)
    • 每次在我们的主分支中完成合并请求时,我们的持续集成管道都会启动一个新的构建并将我们的 DAG 文件打包到一个 zip 中(我们使用 Atlassian Bamboo,但还有其他解决方案,例如 Jenkins、Circle CI、Travis...)
    • 在 Bamboo 中,我们配置了一个部署脚本(shell),用于解压缩包并将 DAG 文件放置在 Airflow 服务器上的 /dags 文件夹中。
    • 我们通常将 DAG 部署在 DEV 中进行测试,然后部署到 UAT,最后部署到 PROD。借助上述 shell 脚本,只需单击 Bamboo UI 中的按钮即可完成部署。

    好处

    1. 由于您已在文件名中包含 DAG 版本,因此 DAG 文件夹中的 DAG 文件的先前版本不会被覆盖,因此您可以轻松返回该文件
    2. 当您的新 DAG 文件加载到 Airflow 中时,您可以通过版本号在 UI 中识别它。
    3. 因为您的 DAG 文件名 = DAG Id,您甚至可以通过添加一些 Airflow 命令行来改进部署脚本,以便在部署新 DAG 后自动打开它们。
    4. 由于 DAG 的每个版本都在 Git 中进行了历史记录,因此如果需要,我们始终可以返回到以前的版本。

    关于airflow - 在 Airflow 上部署 dag 文件的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48378712/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com