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

Docker中PySpark/Jupyter Notebook连接本地PostgreSQL遇拒问题求助

解决Docker容器中PySpark连接本地PostgreSQL的连接拒绝问题
  • 修改PostgreSQL监听配置
    编辑PostgreSQL配置文件postgresql.conf(通常路径为/etc/postgresql/<version>/main/postgresql.conf),找到listen_addresses参数,将其值改为'*',允许PostgreSQL监听所有网络接口。修改后重启PostgreSQL服务:

    sudo systemctl restart postgresql
    
  • 配置PostgreSQL访问权限
    编辑pg_hba.conf(同目录下),添加一条允许Docker容器网段访问的规则。Docker默认使用172.17.0.0/16网段,添加以下内容:

    host    all             all             172.17.0.0/16            scram-sha-256
    

    (如果你的PostgreSQL使用的是md5认证,替换scram-sha-256为md5),之后重启PostgreSQL服务。

  • 放行防火墙端口
    确保宿主机防火墙允许5432端口(PostgreSQL默认端口)的入站请求,以Docker网段为例:

    sudo ufw allow from 172.17.0.0/16 to any port 5432
    

    (如果使用其他防火墙工具,比如firewalld,对应调整命令)

  • 使用宿主机实际IP构造连接URL
    不要依赖localhost或host.docker.internal,直接用宿主机在局域网内的实际IP地址(比如192.168.1.100)构造PySpark的JDBC连接URL:

    df = spark.read.format("jdbc") \
        .option("url", "jdbc:postgresql://192.168.1.100:5432/your_database_name") \
        .option("dbtable", "your_table_name") \
        .option("user", "your_db_user") \
        .option("password", "your_db_password") \
        .option("driver", "org.postgresql.Driver") \
        .load()
    

    注意要确保容器内已经包含PostgreSQL的JDBC驱动(可以在启动容器时挂载驱动包,或者使用预装驱动的镜像)。

  • 可选:通过Unix套接字连接
    如果上述方法仍不生效,可以将宿主机的PostgreSQL套接字目录挂载到容器中。启动容器时添加挂载参数:

    docker run -v /var/run/postgresql:/var/run/postgresql ...
    

    然后构造连接URL时指定套接字路径:

    df = spark.read.format("jdbc") \
        .option("url", "jdbc:postgresql://localhost/your_database_name?socketFactory=org.postgresql.core.PGStreamSocketFactory&socketPath=/var/run/postgresql/") \
        .option("dbtable", "your_table_name") \
        .option("user", "your_db_user") \
        .option("password", "your_db_password") \
        .option("driver", "org.postgresql.Driver") \
        .load()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 18:31:43