我正在尝试使用spark.read.jdbc从PySpark连接到MS SQL DB 。
import os
from pyspark.sql import *
from pyspark.sql.functions import *
from pyspark import SparkContext;
from pyspark.sql.session import SparkSession
sc = SparkContext('xx')
spark = SparkSession(sc)
spark.read.jdbc('DESKTOP-XXXX\SQLEXPRESS',
"""(select COL1, COL2 from tbl1 WHERE COL1 = 2) """,
properties={'user': sa, 'password': 12345, 'driver': xxxx})
我不知道sc = SparkContext('xx')
和'driver': xxxx
哪些参数我应该通过?
替换serveraddress
为你的数据库地址:
sc = SparkContext()
spark = SparkSession(sc)
spark.read \
.format('jdbc') \
.option('url', 'jdbc:sqlserver://serveraddress:1433') \
.option('user', 'sa') \
.option('password', '12345') \
.option('dbtable', '(select COL1, COL2 from tbl1 WHERE COL1 = 2)')
代码工作正常,然后我加载df:文件“ .. \ spark \ python \ pyspark \ sql \ readwriter.py”,行172,在加载中返回self._df(self._jreader.load())文件“ .. \调用 文件“ .. \ spark \ python \ pyspark \ sql \ utils.py”第63行中的“ spark \ python \ lib \ py4j-0.10.7-src.zip \ py4j \ java_gateway.py”,第1256行装饰返回f(* a,** kw)文件“ .. \ spark \ python \ lib \ py4j-0.10.7-src.zip \ py4j \ protocol.py”,第326行,位于get_return_value py4j.protocol.Py4JJavaError中:调用o42.load时发生错误。:java.sql.SQLException:java.sql.DriverManager.getDriver处没有合适的驱动程序(未知源)
那是因为您的spark / jars文件夹中没有用于SQL Server的JDBC驱动程序。在stackoverflow.com/questions/65060192/中查看我的答案
我看到了。当我下载时,在下载rar文件中有很多文件,我应该只在spark / jars文件夹中放3个.jar文件吗?
When you download the driver, there are multiple JAR files. The name of the JAR file indicates the version of Java that it supports.
根据系统中的Java版本选择适当的jar文件,然后仅将其放入spark / jars文件夹中