3

你们对 Composer 文件夹/目录结构有什么推荐吗?它的结构方式与我们内部 Airflow 服务器现在使用的方式不同。

基于谷歌文档:https ://cloud.google.com/composer/docs/concepts/cloud-storage :

  • plugins/: 存储你的自定义插件、操作符、钩子
  • dags/:存储 dag 和 Web 服务器解析 dag 所需的任何数据。
  • data/:存储任务产生和使用的数据。

这是我如何组织 dags 文件夹的示例: dags结构

之前我将 key.json 文件放入文件data/夹时遇到了麻烦,并且无法使用data/文件夹中的键解析 dags。所以现在我倾向于将所有支持文件放在dags/文件夹中。

如果我将 dag 支持的文件(sql、keys、schema)放在dags/文件夹中,调度程序的性能会受到影响吗?是否有使用该文件夹的好用例data/

如果你们可以向我展示如何构建 composer 文件夹以支持具有不同 dag、插件和支持的文件的多个项目的示例,将会很有帮助。

现在,我们只有 1 个 Github 用于整个 Airflow 文件夹。每个项目有一个单独的 git 会更好吗?

谢谢!

4

2 回答 2

1

只要您放在 dags 文件夹中的文件不是.py文件,对调度程序的影响应该是相当小的;但是,您也可以将文件放在插件文件夹中,该文件夹也通过副本同步。

dags/projectA/dagA.py如果项目足够大,我会使用顶级文件夹来分隔项目(例如),甚至是单独的环境。

于 2018-11-14T19:07:02.687 回答
0

第一个问题:

我之前将 key.json 文件放在 data/ 文件夹中时遇到了麻烦,并且无法使用 data/ 文件夹中的键解析 dag。所以现在我倾向于将所有支持文件放在 dags/ 文件夹中。

您只需要设置正确的配置即可从 data/ 或 plugins/ 文件夹中读取这些文件。在作曲家中运行气流与在本地运行它之间的文件系统之间的区别在于这些文件夹的路径发生了变化。

为了帮助您解决这个问题,在另一篇文章中,我描述了一种为这些文件夹找到正确路径的解决方案。我从帖子中引用我的评论:

“如果我输入的路径不适合您,您将需要找到您的 Cloud Composer 实例的路径。这并不难找到。在任何 DAG 中,您只需记录 sys.path 变量并查看打印的路径。 "

第二个问题:

如果我将 dag 支持的文件(sql、keys、schema)放在 dags/ 文件夹中,调度程序的性能会受到影响吗?是否有使用 data/ 文件夹的好用例?

是的,至少调度程序需要检查这些是否是 python 脚本。这不是真的那么多,但确实有影响。

如果您解决了从数据或插件文件夹中读取的问题,您应该将这些文件移动到这些文件夹中。

第三个问题:

现在,我们只有 1 个 Github 用于整个 Airflow 文件夹。每个项目有一个单独的 git 会更好吗?

如果您的不同项目需要不同的 pypi 包,那么为每个项目和不同的气流环境拥有单独的存储库也是理想的。这样做的原因是您将利用陷入 pypi 包依赖项错误的风险并减少构建时间。

另一方面,如果您的项目将使用相同的 pypi 包,我建议将所有内容保存在一个存储库中,直到将每个项目都放在不同的存储库中变得更容易。但是将所有内容都放在一个 repo 中会使部署更容易。

于 2022-02-02T23:40:01.053 回答