未找到 Airflow dbt 云提供商模块

问题描述 投票:0回答:1

我正在尝试使用 Airflow 和 dbt 云提供商触发 dbt 作业,整个过程都是 Docker 化的,这意味着调度程序和 Web 服务器有自己的容器。出于某种原因,我收到“from airflow.providers.dbt.cloud.operators.dbt import DbtCloudRunJobOperator ModuleNotFoundError:没有名为 'airflow.providers.dbt' 的模块”,我不知道为什么,因为我 pip 安装了其他气流提供程序并且它们似乎工作正常,这意味着我在计算机中进行的 pip 安装似乎也发生在容器(调度程序和 Web 服务器)中,但是当我像所有其他提供商一样在我的计算机中 pip 安装 dbt 云提供商时,它并没有发生。不会反映在容器上,并且气流 UI 顶部会弹出错误(Broken Dag:找不到模块)

我尝试进入网络服务器和调度程序容器,以在 pip 将其安装到我的 PC 后验证提供程序是否在那里(不是这样)。

我还尝试在 Web 服务器容器中手动安装提供程序,它暂时有效并且没有显示错误,但是当我尝试添加连接时,dbt 云连接类型随处可见。

我还尝试添加包含提供程序名称的requirements.txt,然后在 docker-compose.yml 中添加文件和运行安装的命令,如下所示:

气流网络服务器: <<: *airflow-common # ... other configurations command: ["airflow", "providers", "install", "--requirements", "/opt/airflow/requirements.txt", "webserver"]

气流调度器: <<: *airflow-common # ... other configurations command: ["airflow", "providers", "install", "--requirements", "/opt/airflow/requirements.txt", "scheduler"]

但容器不工作并不断重新启动。

请帮助我,我已经没有主意了

docker airflow dbt
1个回答
0
投票

要解决在 Docker 环境中使用 Airflow 和 dbt 云提供商触发 dbt 作业时出现 ModuleNotFoundError 问题,请按照以下步骤操作:

第1步:确保在Docker容器中正确安装 更新requirements.txt文件:将dbt云提供商添加到您的requirements.txt文件中:

apache-airflow-providers-dbt-cloud 复制 修改Dockerfile:确保构建容器时安装了requirements.txt中的依赖项。这是一个 Dockerfile 示例:

来自阿帕奇/气流:2.5.1

用户根 运行 apt-get update && apt-get install -y \ 构建必备 \ && apt-get clean \ && rm -rf /var/lib/apt/lists/*

用户气流 复制requirements.txt。 运行 pip install --no-cache-dir -rrequirements.txt 更新 docker-compose.yml 文件:确保 docker-compose.yml 文件已正确配置为使用更新的 Dockerfile 来构建 Docker 映像。这是一个例子:

版本:'3.8' 服务: 气流网络服务器: 建造: 。 图片:my_airflow_image:最新 容器名称:airflow-webserver 重新启动:始终 环境: - LOAD_EX=n - EXECUTOR=本地执行器 端口: - “8080:8080” 卷: - ./dags:/opt/airflow/dags - ./logs:/opt/airflow/logs - ./plugins:/opt/airflow/plugins 命令:网络服务器

气流调度器: 建造: 。 图片:my_airflow_image:最新 容器名称:气流调度程序 重新启动:始终 环境: - LOAD_EX=n - EXECUTOR=本地执行器 卷: - ./dags:/opt/airflow/dags - ./logs:/opt/airflow/logs - ./plugins:/opt/airflow/plugins 命令:调度程序 复制 重建并重新启动容器:更新 Dockerfile 和 docker-compose.yml 后,重建 Docker 映像并重新启动容器:

docker-compose down docker-compose 构建 docker-compose up -d 复制 验证安装:容器启动后,您可以通过访问 Web 服务器容器并检查 dbt 提供程序是否已安装来验证安装:

docker exec -it airflow-webserver bash 点列表 | grep dbt 复制 额外提示 持久安装:确保在容器内执行的任何手动安装都反映在 Dockerfile 或requirements.txt 中,以在容器重新启动时保持持久性。

检查日志:如果容器不断重启,请检查日志以获取更详细的错误信息:

docker 日志airflow-webserver docker 日志气流调度 复制 通过执行这些步骤,您应该能够解决 ModuleNotFoundError 问题,并确保 dbt 云提供商已正确安装并在 Airflow Docker 容器中可用。

© www.soinside.com 2019 - 2024. All rights reserved.