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
相关产品推荐
相关产品推荐

