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

Docker部署Marquez与Airflow遇PostgreSQL报错及数据集不显示问题

问题解决:PostgreSQL "relation 'log' does not exist" 及 Marquez 数据集不显示

错误原因分析

  1. PostgreSQL权限不足:你的init-db.sh仅授予了用户数据库级权限,但未开放默认public schema的操作权限,导致Airflow/Marquez无法创建所需表(如log表)。
  2. Airflow元数据未初始化:Bitnami Airflow镜像需要显式执行数据库初始化命令,否则不会自动生成元数据表结构。
  3. Marquez数据库未迁移:Marquez必须执行数据库迁移来创建存储数据集的表结构,否则无法正常展示数据集。

修复步骤

1. 更新初始化脚本(init-db.sh)

修改init-db.sh,为Airflow和Marquez用户添加public schema的操作权限:

#!/bin/bash
# Usage: $ ./init-db.sh

set -eu

psql -v ON_ERROR_STOP=1 --username "${POSTGRES_USER}" > /dev/null <<-EOSQL
  CREATE USER ${AIRFLOW_USER};
  ALTER USER ${AIRFLOW_USER} WITH PASSWORD '${AIRFLOW_PASSWORD}';
  CREATE DATABASE ${AIRFLOW_DB};
  GRANT ALL PRIVILEGES ON DATABASE ${AIRFLOW_DB} TO ${AIRFLOW_USER};
  -- 切换到Airflow数据库并授予schema权限
  \c ${AIRFLOW_DB};
  GRANT ALL PRIVILEGES ON SCHEMA public TO ${AIRFLOW_USER};

  CREATE USER ${MARQUEZ_USER};
  ALTER USER ${MARQUEZ_USER} WITH PASSWORD '${MARQUEZ_PASSWORD}';
  CREATE DATABASE ${MARQUEZ_DB};
  GRANT ALL PRIVILEGES ON DATABASE ${MARQUEZ_DB} TO ${MARQUEZ_USER};
  -- 切换到Marquez数据库并授予schema权限
  \c ${MARQUEZ_DB};
  GRANT ALL PRIVILEGES ON SCHEMA public TO ${MARQUEZ_USER};

  CREATE USER ${EXAMPLE_USER};
  ALTER USER ${EXAMPLE_USER} WITH PASSWORD '${EXAMPLE_PASSWORD}';
  CREATE DATABASE ${EXAMPLE_DB};
  GRANT ALL PRIVILEGES ON DATABASE ${EXAMPLE_DB} TO ${EXAMPLE_USER};
EOSQL

2. 确保Airflow执行元数据初始化

在docker-compose的Airflow服务配置中,添加初始化命令:

airflow:
  image: bitnami/airflow:latest
  # 其他配置(端口、环境变量等)...
  command: >
    bash -c "airflow db init && airflow db upgrade && airflow webserver"

如果Airflow拆分了webserver和scheduler服务,需确保两个服务启动前都执行airflow db upgrade。

3. 执行Marquez数据库迁移

在docker-compose的Marquez服务中添加迁移命令,并配置正确的数据库连接:

marquez:
  image: marquezproject/marquez:latest
  environment:
    - MARQUEZ_DB_URL=jdbc:postgresql://postgres:5432/marquez?user=marquez&password=marquez
  # 其他配置(端口、依赖等)...
  command: >
    bash -c "./wait-for-it.sh postgres:5432 -- marquez db upgrade && marquez server"

4. 重置环境测试

删除现有PostgreSQL数据卷,重新启动服务以应用所有修改:

docker-compose down -v
docker-compose up -d

验证

  • 查看Airflow容器日志,确认log表相关错误消失
  • 访问Marquez UI,检查数据集是否正常加载显示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 05:57:17