You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Apache Airflow中dbt工作流运行失败求助

问题:Docker环境下Airflow执行dbt工作流报错(Unexpected EOF while reading bytes)

问题描述

  • 作为Apache Airflow和dbt新手,在Docker环境运行Airflow时,执行dbt演示工作流出现错误
  • 本地环境可成功运行dbt模型,尝试多种连接配置组合、确认凭证无误后,仍出现相同错误

错误日志(翻译后)

[2024-09-27, 14:50:45 UTC] {subprocess.py:69} INFO - 正在运行命令: ['/usr/local/airflow/dbt_venv/bin/dbt', 'run', '--models', 'my_first_dbt_model', '--project-dir', '/tmp/tmp943gjfck', '--profiles-dir', '/tmp/cosmos/profile/1d390e975d9ea414ab43ddd449486c885400dd6be3d9c4b702d12711ab61e6e4', '--profile', 'default', '--target', 'dev']
[2024-09-27, 14:50:45 UTC] {subprocess.py:80} INFO - 命令输出:
[2024-09-27, 14:50:46 UTC] {subprocess.py:90} INFO - 14:50:46  使用dbt=1.8.7运行
[2024-09-27, 14:50:46 UTC] {subprocess.py:90} INFO - 14:50:46  已注册适配器: clickhouse=1.8.4
[2024-09-27, 14:50:46 UTC] {subprocess.py:90} INFO - 14:50:46  因配置文件变更,无法执行部分解析
[2024-09-27, 14:50:47 UTC] {subprocess.py:90} INFO - 14:50:47  找到2个模型,4个数据测试,574个宏
[2024-09-27, 14:50:47 UTC] {subprocess.py:90} INFO - 14:50:47
[2024-09-27, 14:50:47 UTC] {subprocess.py:90} INFO - 14:50:47
[2024-09-27, 14:50:47 UTC] {subprocess.py:90} INFO - 14:50:47  执行完成,耗时0小时0分0.21秒(0.21s)
[2024-09-27, 14:50:47 UTC] {subprocess.py:90} INFO - 14:50:47  遇到错误:
[2024-09-27, 14:50:47 UTC] {subprocess.py:90} INFO - 数据库错误
[2024-09-27, 14:50:47 UTC] {subprocess.py:90} INFO -   读取字节时遇到意外EOF
[2024-09-27, 14:50:48 UTC] {subprocess.py:94} INFO - 命令退出码为2
[2024-09-27, 14:50:48 UTC] {local.py:286} INFO -   读取字节时遇到意外EOF
[2024-09-27, 14:50:48 UTC] {local.py:196} WARNING - 制品 schema 版本: https://schemas.getdbt.com/dbt/manifest/v12.json 高于dbt-ol支持的版本7,可能引发错误
[2024-09-27, 14:50:48 UTC] {local.py:389} INFO - 入口: []
[2024-09-27, 14:50:48 UTC] {local.py:390} INFO - 出口: []
[2024-09-27, 14:50:48 UTC] {dag.py:3239} INFO - 同步1个DAG
[2024-09-27, 14:50:48 UTC] {dag.py:4180} INFO - 设置dbt_dag的下次运行时间为2024-09-27 00:00:00+00:00,下次触发时间为2024-09-28 00:00:00+00:00
[2024-09-27, 14:50:48 UTC] {local.py:193} ERROR - 14:50:46  使用dbt=1.8.7运行

解决建议

1. 校验Docker网络连通性

  • 进入Airflow容器内部,执行telnet <ClickHouse主机地址> <端口>或nc -zv <ClickHouse主机地址> <端口>,测试容器与数据库的端口连通性
  • 若数据库也是Docker容器,确认两者处于同一Docker网络,或使用容器名称/正确的内部IP作为连接地址

2. 适配dbt与依赖版本

  • 当前dbt版本1.8.7,dbt-clickhouse适配器版本1.8.4,存在版本适配风险。建议降级到dbt 1.7.x系列,对应使用dbt-clickhouse 1.7.x版本,避免新版本兼容性问题
  • 日志提示制品schema版本v12高于dbt-ol支持的v7,这会引发兼容性问题,需使用与dbt-ol兼容的dbt版本

3. 排查临时配置文件问题

  • Airflow通过Cosmos生成的临时profiles目录可能存在配置异常。手动将本地可用的profiles.yml复制到Airflow容器内的临时目录(日志中--profiles-dir指定的路径),再执行dbt命令测试
  • 核对临时配置中的host、port、database、user、password与本地运行时完全一致,避免容器环境下的变量替换错误

4. 调整ClickHouse连接参数

  • 在dbt profile中添加连接超时参数,延长连接等待时间:
default:
  target: dev
  outputs:
    dev:
      type: clickhouse
      host: <你的主机地址>
      port: 8123
      user: <你的用户名>
      password: <你的密码>
      database: <你的数据库>
      schema: <你的schema>
      connect_timeout: 30
  • 若启用了SSL,尝试添加secure: false参数禁用SSL,排查是否是SSL握手导致连接中断

5. 查看ClickHouse服务器日志

  • 登录ClickHouse服务器,查看/var/log/clickhouse-server/clickhouse-server.log,检查是否有连接拒绝、权限错误或其他异常,定位问题根源

内容的提问来源于stack exchange,提问作者sup3rgiant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 20:59:51