alt*_*-f4 4 docker airflow dbt
构建关于如何在气流中运行 DBT 而不复制我们的 repo 的问题,我目前正在运行气流并通过 git 同步 dag。我正在考虑在我的工作流程中包含 DBT 的不同选项。louis_guitton 的一个建议是将 DBT 项目Docker 化,并通过Docker Operator在 Airflow 中运行它。
我之前没有在 Airflow 或一般 DBT 中使用 Docker Operator 的经验。我想知道是否有人尝试过或可以提供一些有关他们结合该工作流程的经验的见解,我的主要问题是:
从您的问题来看,您将受益于尝试独立于气流独立于 dockerise dbt。你的很多问题都会消失。但无论如何,这是我的答案。
DBT 作为一个整体项目应该作为一个 Docker 容器运行,还是应该分解?(例如:测试是否作为独立于 dbt 任务的容器运行?)
我建议你为整个项目构建一个 docker 镜像。docker 镜像可以基于 python 镜像,因为 dbt 是一个 python CLI 工具。然后,您可以使用 docker 映像的 CMD 参数来运行您将在 docker 之外运行的任何 dbt 命令。请记住docker run
(与 dbt 无关)的语法:您可以指定要在调用时运行的任何命令
$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
Run Code Online (Sandbox Code Playgroud)
此外,Google 上第一个搜索“ docker dbt”的是这个 dockerfile,它可以让你开始
通过 Docker Operator 运行时,来自 DBT 的日志和 UI 是否可访问和/或仍然有用?
同样,这不是 dbt 问题,而是 docker 问题或气流问题。
使用 DockerOperator 时,您能在气流 UI 中看到日志吗?是的,请参阅如何使用屏幕截图撰写博客文章。
您可以从 docker 容器访问日志吗?是的,Docker 容器将日志发送到stdout
并stderr
输出流(您可以在气流中看到,因为气流会接收到它)。但是日志也存储在主机上一个文件夹中的 JSON 文件中/var/lib/docker/containers/
。如果您有任何高级需求,您可以使用工具(或简单的 BashOperator 或 PythonOperator)获取这些日志,然后用它做您需要的事情。
如何运行部分管道?(例如:只想运行管道的一部分)
请参阅答案 1,您将使用以下命令运行 docker dbt 映像
$ docker run my-dbt-image dbt run -m stg_customers
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1031 次 |
最近记录: |