这就是我如何成功地从Databricks Runtime 10.4中的SQL服务器阅读数据,使用遗留的JDBC驱动程序:
remote_table = (
spark.read.format("jdbc")
.option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver")
.option("url", "jdbc:sqlserver://mydomainname.com;database=Runtime")
.option("dbtable", "Runtime.dbo.History")
.option("user", "myusername")
.option("password", "mypassword")
.load()
)
字符串
我想在Runtime 12.2中使用“较新”的方法:
remote_table = (spark.read
.format("sqlserver")
.option("host", "mydomainname.com")
.option("user", "myusername")
.option("password", "mypassword")
.option("database", "Runtime")
.option("dbtable", "Runtime.dbo.History")
.load()
)
型
但返回一个错误:
com.microsoft.sqlserver.jdbc.SQLServerException:驱动程序无法使用 ssl 层(SSL)加密建立到SQL Server的安全连接。错误:“PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到到请求的目标”“的有效证书路径。ClientConnectionId:56f3b77d-a90a-4c89-98be-88924f364897
是的,我记得将集群切换到运行时12.2的集群。
1条答案
按热度按时间gjmwrych1#
“sqlserver”连接器只是JDBC的 Package 器,如果您尝试传统的JDBC连接,您将在runtime 12.x上遇到相同的问题。
虽然Databricks runtime 10.x使用SQL Server JDBC驱动程序版本9.x,但版本10.2(在12.x runtime中使用)中有一个突破性的更改,默认情况下启用TLS加密并强制证书验证。对于这个类似的问题,回答了here。SQL Server文档中的额外信息了解加密支持。
简而言之,添加以下选项:
字符串
或者是
型