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

PySpark单会话同时连接PostgreSQL与SQL Server问题求助

单个SparkSession同时连接PostgreSQL和SQL Server的解决方案

你不需要创建多个SparkSession,只需要在初始化SparkSession时,把两个JDBC驱动的jar包路径用逗号分隔,配置到spark.jars参数里即可。

修改后的SparkSession初始化代码

from pyspark.sql import SparkSession

# 单个SparkSession同时加载SQL Server和PostgreSQL的JDBC驱动
spark = SparkSession \
    .builder \
    .appName("Spark SQL Connect Multiple DBs") \
    .config("spark.jars", "mssql-jdbc-8.4.1.jre8.jar,postgresql-42.2.5.jar") \
    .getOrCreate()

读取PostgreSQL数据示例

# PostgreSQL连接配置
pg_url = "jdbc:postgresql://<pg_host>:<pg_port>/<pg_database>"
pg_properties = {
    "user": "<pg_username>",
    "password": "<pg_password>",
    "driver": "org.postgresql.Driver"
}

# 读取PostgreSQL指定表的数据
pg_df = spark.read.jdbc(url=pg_url, table="<pg_table_name>", properties=pg_properties)
pg_df.show()

读取SQL Server数据示例

# SQL Server连接配置
mssql_url = "jdbc:sqlserver://<mssql_host>:<mssql_port>;databaseName=<mssql_database>"
mssql_properties = {
    "user": "<mssql_username>",
    "password": "<mssql_password>",
    "driver": "com.microsoft.sqlserver.jdbc.SQLServerDriver"
}

# 读取SQL Server指定表的数据
mssql_df = spark.read.jdbc(url=mssql_url, table="<mssql_table_name>", properties=mssql_properties)
mssql_df.show()

注意事项

  • 如果JDBC驱动jar包不在代码执行的当前目录,需要填写完整的绝对路径,比如/opt/jars/mssql-jdbc-8.4.1.jre8.jar,/opt/jars/postgresql-42.2.5.jar
  • 确保驱动类名填写正确:PostgreSQL对应org.postgresql.Driver,SQL Server对应com.microsoft.sqlserver.jdbc.SQLServerDriver
  • 替换代码中所有带<>的占位符为你的实际数据库连接信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 10:18:39