Dags和任务的气流结构/组织

non*_*ono 16 airflow apache-airflow

我的问题:

fer*_*sjp 10

我也想与其他人一起对文件夹结构进行基准测试。也许这取决于您使用Airflow的用途,但我会与您分享我的情况。我正在做数据管道以建立数据仓库,因此从高层次上讲,我基本上有两个步骤:

  1. 将大量数据转储到数据湖中(仅少数人可以直接访问)
  2. 将数据从数据湖加载到分析数据库中,在该数据库中将对数据进行建模并将其公开给仪表板应用程序(许多sql查询以对数据进行建模)

今天,我将文件组织到三个主要文件夹中,这些文件夹试图反映上述逻辑:

??? dags
?   ??? dag_1.py
?   ??? dag_2.py
??? data-lake
?   ??? data-source-1
?   ??? data-source-2
??? dw
    ??? cubes
    ?   ??? cube_1.sql
    ?   ??? cube_2.sql
    ??? dims
    ?   ??? dim_1.sql
    ?   ??? dim_2.sql
    ??? facts
        ??? fact_1.sql
        ??? fact_2.sql
Run Code Online (Sandbox Code Playgroud)

这或多或少是我的基本文件夹结构。


tre*_*nch 9

我用这样的东西。

  • 一个项目通常是完全独立或独特的。也许DAG会处理我们从某个客户端收到的文件,而这些文件将与其他所有文件完全不相关(几乎可以肯定是一个单独的数据库模式)
  • 我的操作员,挂钩和一些帮助程序脚本(删除特定DAG的所有Airflow数据等)位于一个公用文件夹中
  • 我曾经为整个Airflow文件夹提供了一个git仓库,但是现在每个项目都有一个单独的git(由于项目之间的关系不多,因此它更有条理,并且更容易授予Gitlab权限)。这意味着每个项目文件夹也以.git和.gitignore等形式存在
  • 我倾向于保存原始数据,然后“保留”数据的修改后的副本,该副本恰好是复制到数据库中的副本。由于来自不同客户端的格式不同,我不得不大量修改一些原始数据(Excel,Web抓取,HTML电子邮件抓取,平面文件,来自SalesForce或其他数据库源的查询...)

示例树:

????dags
?   ????common
?   ?   ????hooks
?   ?   ?       pysftp_hook.py
?   ?   ?
?   ?   ????operators
?   ?   ?       docker_sftp.py
?   ?   ?       postgres_templated_operator.py
?   ?   ?
?   ?   ????scripts
?   ?           delete.py
?   ?
?   ????project_1
?   ?   ?   dag_1.py
?   ?   ?   dag_2.py
?   ?   ?
?   ?   ????sql
?   ?           dim.sql
?   ?           fact.sql
?   ?           select.sql
?   ?           update.sql
?   ?           view.sql
?   ?
?   ????project_2
?       ?   dag_1.py
?       ?   dag_2.py
?       ?
?       ????sql
?               dim.sql
?               fact.sql
?               select.sql
?               update.sql
?               view.sql
?
????data
    ????project_1
    ?   ????modified
    ?   ?       file_20180101.csv
    ?   ?       file_20180102.csv
    ?   ?
    ?   ????raw
    ?           file_20180101.csv
    ?           file_20180102.csv
    ?
    ????project_2
        ????modified
        ?       file_20180101.csv
        ?       file_20180102.csv
        ?
        ????raw
                file_20180101.csv
                file_20180102.csv
Run Code Online (Sandbox Code Playgroud)

  • 只是跟进这个线程。有人看到这个存储库结构对调度程序有什么影响吗? (3认同)