如何在不复制我们的仓库的情况下在气流中运行 DBT

Can*_*ice 3 airflow dbt

我们使用 DBT 与 GCP 和 BigQuery 在 BigQuery 中进行转换,安排我们每天的最简单方法run dbt似乎是BashOperator在 Airflow 中。目前我们有两个独立的目录/github 项目,一个用于 DBT,另一个用于 Airflow。要安排 DBT 与 Airflow 一起运行,似乎我们的整个 DBT 项目需要嵌套在我们的 Airflow 项目中,这样我们就可以为dbt runbash 命令指向它?

是否可以在不将 DBT 目录移动到 Airflow 目录中的情况下触发我们的dbt rundbt test?使用airflow -dbt包,对于dir中的default_args,也许可以在这里指向DBT项目的gibhub链接?

lou*_*ton 7

我的建议是将 dbt 和 airflow 代码库分开。确实有更好的方法:

  1. 在一个简单的基于 python 的映像中 dockerise dbt 项目,您可以在其中复制代码库
  2. 将其推送到 DockerHub 或 ECR 或您正在使用的任何其他 docker 存储库
  3. 使用DockerOperator您的气流DAG与您的DBT代码运行的码头工人形象

我假设你在这里使用了气流 LocalExecutor 并且你想dbt run在运行气流的服务器上执行你的工作负载。如果情况并非如此,并且您有权访问 Kubernetes 集群,我建议改为使用KubernetesPodOperator.

  • 我强烈赞同这一点。我认为这已经成为自托管 dbt 调度事实上的社区标准。 (2认同)
  • 这太棒了,我知道一定有比组合代码库更好的方法。我肯定会使用这种方法。 (2认同)