docker - 通过 Docker Operator 在 Airflow 中运行 DBT

标签 docker airflow dbt

How to run DBT in airflow without copying our repo 上建立我的问题,我目前正在运行 Airflow 并通过 git 同步 dag。我正在考虑在我的工作流程中包含 DBT 的不同选项。来自 louis_guitton 的一项建议是将 DBT 项目 Dockerize,并通过 Docker Operator 在 Airflow 中运行它.
我之前没有在 Airflow 或一般 DBT 中使用 Docker Operator 的经验。我想知道是否有人尝试过或可以提供一些有关他们结合该工作流程的经验的见解,我的主要问题是:

  • DBT 作为一个整体项目应该作为一个 Docker 容器运行,还是应该分解? (例如:测试是否作为独立于 dbt 任务的容器运行?)
  • 通过 Docker Operator 运行时,来自 DBT 的日志和 UI 是否可访问和/或仍然有用?
  • 如何运行部分管道? (例如:只想运行管道的一部分)
  • 最佳答案

    从您的问题来看,您将受益于尝试独立于 Airflow 独立于 dockerise dbt。你的很多问题都会消失。但无论如何,这是我的答案。


  • Should DBT as a whole project be run as one Docker container, or is it broken down? (for example: are tests ran as a separate container from dbt tasks?)



  • 我建议你为整个项目构建一个 docker 镜像。 docker 镜像可以基于 python 镜像,因为 dbt 是一个 python CLI 工具。然后,您可以使用 docker 镜像的 CMD 参数来运行您将在 docker 之外运行的任何 dbt 命令。
    请记住 docker run 的语法(与 dbt 无关):您可以指定在调用时要运行的任何命令
    $ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
    
    此外,“docker dbt”在 Google 上的第一个点击是 this dockerfile这可以让你开始

  • Are logs and the UI from DBT accessible and/or still useful when run via the Docker Operator?



  • 同样,这不是 dbt 问题,而是 docker 问题或 Airflow 问题。
    使用 DockerOperator 时,您能在 Airflow UI 中看到日志吗?是的,see this how to blog post with screenshots .
    您可以从 docker 容器访问日志吗?是的,Docker 容器将日志发送到 stdoutstderr输出流(您可以在 Airflow 中看到,因为 Airflow 会拾取它)。但是日志也存储在主机上的 JSON 文件中的文件夹 /var/lib/docker/containers/ 中。 .如果您有任何高级需求,您可以使用工具(或简单的 BashOperator 或 PythonOperator)获取这些日志,然后用它做您需要的事情。

  • How would partial pipelines be run? (example: wanting to run only a part of the pipeline)



  • 请参阅答案 1,您将使用以下命令运行 docker dbt 镜像
    $ docker run my-dbt-image dbt run -m stg_customers
    

    关于docker - 通过 Docker Operator 在 Airflow 中运行 DBT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65464756/

    相关文章:

    docker - 无法从主机连接到在自定义端口上的 Docker 容器内运行的 Redis

    mysql - Drupal 8 没有连接到 Docker 中的 Mysql

    python - Airflow xcom_pull 不提供相同上游任务实例运行的数据,而是提供最新数据

    airflow - 运行 dag 并让 Airflow 运行 : error: the following arguments are required: task_id,execution_date

    python - Airflow BashOperator 不起作用,但 PythonOperator 可以

    docker中的Oracle xe 11g,在ubuntu上重新启动docker后创建的用户丢失

    git - Composer - 在 DockerFile 中使用用户名和密码(无 SSH key )在管道上克隆 Git 存储库(Bitbucket)

    python - 我们如何处理多个 DBT 项目

    snowflake-cloud-data-platform - 如果 dbt 增量模型的模型发生变化,是否有办法强制对其进行完全刷新?