Pyspark:使用 Python 从 Spark 2.4 连接到 MS SQL Server 2017 时没有合适的驱动程序错误

Posted

技术标签:

【中文标题】Pyspark:使用 Python 从 Spark 2.4 连接到 MS SQL Server 2017 时没有合适的驱动程序错误【英文标题】:Pyspark: No suitable Driver error while connecting to MS SQL Server 2017 from Spark 2.4 using Python 【发布时间】:2019-07-09 12:55:12 【问题描述】:

我在使用 python 运行 spark 作业时遇到问题,即 pyspark。 请看下面的代码sn-ps

from pyspark.sql import SparkSession
from os.path import abspath
from pyspark.sql.functions import max,min,sum,col
from pyspark.sql import functions as F
spark = SparkSession.builder.appName("test").config("spark.driver.extraClassPath", "/usr/dt/mssql-jdbc-6.4.0.jre8.jar").getOrCreate()
spark.conf.set("spark.sql.execution.arrow.enabled", "true")
spark.conf.set("spark.sql.session.timeZone", "Etc/UTC")
warehouse_loc = abspath('spark-warehouse')

#loading data from MS SQL Server 2017
df = spark.read.format("jdbc").options(url="jdbc:sqlserver://10.90.3.22;DATABASE=TransTrak_V_1.0;user=sa;password=m2m@ipcl1234",properties =  "driver": "com.microsoft.sqlserver.jdbc.SQLServerDriver" ,dbtable="Current_Voltage").load()

当我运行这段代码时,我遇到了以下错误:

py4j.protocol.Py4JJavaError: An error occurred while calling o38.load.
: java.sql.SQLException: No suitable driver

之前运行良好的相同代码。但是,由于某些原因,我不得不重新安装centOS 7,然后重新安装Python 3.6。我已将 python 3.6 设置为 spark 中的默认 python,即当我启动 pyspark 时,默认 python 为 3.6。

顺便提一下,系统默认的python是Python 2.7。我使用的是centOS 7。

这里出了什么问题?有人可以帮忙吗?

【问题讨论】:

请大家帮忙。正如我所说,这之前运行良好。是因为 Spark 2.4.3 版本的原因吗? 我猜是因为你的jdbc驱动和你的db不匹配。 有同样的问题,Python3,Mac中的openjdk 【参考方案1】:

好的,经过长时间的搜索,看来 spark 可能无法与openjdkjava-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64 一起正常工作。当我看到默认的 Java 时,我看到它如下

openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

然后我尝试从官方站点安装 Oracle JDK 8,但是,我遇到了不同的问题。 所以简而言之,我无法像之前那样运行火花作业。

【讨论】:

以上是关于Pyspark:使用 Python 从 Spark 2.4 连接到 MS SQL Server 2017 时没有合适的驱动程序错误的主要内容,如果未能解决你的问题,请参考以下文章

来自 Spark 安装的 Pyspark VS Pyspark python 包

从 Scala Spark 代码调用 Pyspark 脚本

从pyspark手动调用spark的垃圾收集

我可以使用spark 2.3.0和pyspark从Kafka进行流处理吗?

Apache Spark:如何在Python 3中使用pyspark

Spark Python Pyspark 如何使用字典数组和嵌入式字典来展平列(sparknlp 注释器输出)