将 pyspark 连接到 SQL Server 时出错

Posted

技术标签:

【中文标题】将 pyspark 连接到 SQL Server 时出错【英文标题】:Error in connecting with pyspark to SQL Server 【发布时间】:2021-06-02 10:08:58 【问题描述】:

我正在尝试使用 pyspark 从本地连接到 SQL Server。我已经下载了最后一个driver version,但是运行下面的代码时会出现这个错误:

错误:“客户端首选项 [TLS12] 不接受服务器选择的协议版本 TLS10”

代码如下(Spark 会话之前已启动,驱动程序位于支持的路径中):

jdbcDF = spark.read \
   .format("jdbc") \
   .option("url","jdbc:sqlserver://<host>\\<port>;database=<database>;") \
   .option("dbtable", <table>) \
   .option("user", <username>) \
   .option("password", <password>) \
   .option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver") \
   .load()

我了解到一种可能的解决方案是从 SQL Server 更改一些配置,但这对我来说是不可能的。有什么方法可以在不更改 SQL Server 中的任何内容的情况下修复它?

【问题讨论】:

你为什么使用 TLS1.0? 我猜我是默认用的,能改吗? 运行 SQL Server 的 Windows 版本是什么? 我认为Windows版本是Windows 8.1。 【参考方案1】:

我认为你的问题类似于this one

从上面的链接:

TLS10 在 Java 1.8 及更高版本中被禁用。您可以通过从 java.security 文件中的 jdk.tls.disabledAlgorithms 中删除 TLSv1 来启用它(此编辑在您的客户端计算机中完成,而不是在 SQL Server 中完成)。

这在我的情况下有效。

【讨论】:

以上是关于将 pyspark 连接到 SQL Server 时出错的主要内容,如果未能解决你的问题,请参考以下文章

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

Pyspark/SQL 将具有列表值的列连接到另一个数据框列

将pyspark列连接到pyspark DataFrame

Pyspark 连接到 Microsoft SQL 服务器?

PySpark - 为 SQL Server 使用 Spark 连接器

无法使用 Jupyter 笔记本上的 pyspark 从 Apache Spark 连接到 MS SQL