如何删除气流中的默认示例 dag

Posted

技术标签:

【中文标题】如何删除气流中的默认示例 dag【英文标题】:How to remove default example dags in airflow 【发布时间】:2017-09-10 16:07:51 【问题描述】:

我是 Airbnb 开源工作流/数据管道软件 airflow 的新用户。 Web UI 启动后有几十个默认示例 dag。我尝试了很多方法来删除这些 dag,但我没有这样做。

load_examples = False 在airflow.cfg 中设置。 文件夹 lib/python2.7/site-packages/airflow/example_dags 已删除。

在我删除 dags 文件夹后,这些示例 dag 的状态变为灰色,但这些项目仍占据 Web UI 屏幕。并且在airflow.cfg 中将一个新的dag 文件夹指定为dags_folder = /mnt/dag/1。我检查了这个 dag 文件夹,什么都没有。我真的很奇怪为什么删除这些示例如此困难。

【问题讨论】:

【参考方案1】:

当您启动气流时,请确保您设置:

load_examples = False

在你的airflow.cfg里面

如果您已经启动了气流,但未将其设置为 false,您可以将其设置为 false 并在 cli 中运行 airflow resetdb(!这将破坏所有当前的 dag 信息!)。

或者,您可以进入airflow_db 并从dag 表中手动删除这些条目。

【讨论】:

真的很感激,我解决了这个问题,就像你的回答一样。 我刚刚在 1.8.1 中尝试过,似乎还不够。我可以在运行airflow resetdb 后确认 dag 表是空的,并且我已经对 cfg 文件进行了更改,但是示例 dag 仍然存在于网络服务器中。我必须重新启动网络服务器才能完成这项工作。这涉及杀死大量进程并再次运行airflow webserver。可能最好使用 systemd 或 upstart 来管理重启 airflow.incubator.apache.org/… 运行气流 resetdb 命令在 1.10.5 中运行良好。应该被接受的解决方案(现在投票) 请注意 resetdb 将删除您定义的所有连接/变量。 据我所知,对于 airflow 2.0.1 ;在airflow.cfg 中设置load_examples = False 后,使用airlow db reset 而不是airflow resetdb【参考方案2】:

对于 Airflow 2.0,在 docker-compose.yaml 中,您可以将 AIRFLOW__CORE__LOAD_EXAMPLES: 'false' 设置为不加载它们,而不是编辑 .cfg 文件。

【讨论】:

这为我省去了很多用头撞墙的麻烦。谢谢!文档中的默认 docker-compose 文件设置了此设置,它会覆盖 airflow.cfg 文件中的任何内容。【参考方案3】:

正如其他人所说,您可以在airflow.cfg 内更改load_examples = False。但是,这要求 cfg 文件已经存在。

您可以使用 ENV 变量初始化气流数据库,而无需配置 cfg 文件。

export AIRFLOW__CORE__LOAD_EXAMPLES=False
airflow initdb

更多信息请参见docs。

【讨论】:

【参考方案4】:

在启动气流之前,请确保在 airflow.cfg 文件中将 load_example 变量设置为 False。默认情况下,它设置为 True。

load_examples = False

如果您已经启动了气流,则必须从气流 UI 中手动删除示例 DAG。单击 DAG 右侧可用的删除图标将其删除。

您可以使用airflow resetdb 命令重置数据库,而不是手动删除示例 DAG,但这会删除您的连接和变量以及其他重要信息。不要在生产环境中使用airflow resetdb 选项。

【讨论】:

【参考方案5】:

只是放

load_examples = False

进入airflow.cfg 文件并关闭并重新启动网络服务器和调度程序就可以了

【讨论】:

【参考方案6】:

在启动气流时确保改变

load_examples = False

airflow.cfg 文件中。然后关闭并重新启动网络服务器和调度程序。

【讨论】:

【参考方案7】:

TL;DR:检查您的dags_folder 中是否只有 DAG 文件——Airflow 将递归遍历此目录并尝试加载所有.py 文件。

我已经浪费了一些时间来调试 Airflow 的类似行为:即使 load_examples = False,airflow 仍在加载大量不必要的东西,包括 example_dags。问题是我在dags_folder 中有一个virtualenv 目录venv/,而且——我没想到——Airflow 在 dags 目录中搜索 dags 递归。所以它正在从安装在该 virtualenv 中的 apache-airflow 加载 example_dags。

UPD:有一个 .airflowignore file 可以忽略来自 dags_folder 的目录

【讨论】:

【参考方案8】:

如果在airflow resetdb 并重新启动airflow 后启用了基于LDAP 的身份验证,您的登录窗口可能不会出现,并且由于缓存的登录ID(但没有密码)可能会出错。如果发生这种情况,请清除缓存并尝试。如果仍然不起作用,请关闭身份验证,停止气流并启动。然后打开身份验证停止并启动 - 您将能够看到登录窗口并使用您的 LDAP 身份验证登录 -Suresh

【讨论】:

以上是关于如何删除气流中的默认示例 dag的主要内容,如果未能解决你的问题,请参考以下文章

如何防止气流回填 dag 运行?

如何与客户运营商验证气流 DAG?

每月日期和时间的气流 DAG 调度

如何防止气流回填dag运行?

气流 - 如何仅“填充 DagBag”一次

气流 - Pytest - 未找到夹具“dag”