Databricks连接Azure SQL Server报No suitable driver错误如何解决
解决方案
1. 显式指定JDBC驱动类
现有代码未指定驱动类参数,Spark在部分Databricks Runtime版本下会出现自动检测驱动失效的情况,在write的option中补充驱动类配置即可:
jdbcUrl = f"jdbc:sqlserver://{DBServer}.database.windows.net:1433;database={DBDatabase};user={DBUser};password={DBPword};encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;" df = spark.read.csv("/mnt/lake/RAW/cashsales_1.csv") df.write.mode("overwrite") \ .format("jdbc") \ .option("url", jdbcUrl) \ .option("dbtable", 'UpdatedProducts')\ .option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver") \ .save()
2. 检查集群JDBC驱动安装状态
如果补充驱动参数后还是报错,说明当前集群没有部署SQL Server对应的JDBC驱动:
- 进入集群配置的「Libraries」页,检查是否已经安装Maven包
com.microsoft.sqlserver:mssql-jdbc,版本建议选择和集群JRE版本匹配的最新稳定版 - 若之前安装的驱动被误删,重新安装后重启集群即可恢复
3. 临时指定驱动加载(无需集群重启)
如果不想修改集群配置,可在Notebook开头执行以下语句,动态加载JDBC驱动包:
spark.conf.set("spark.jars.packages", "com.microsoft.sqlserver:mssql-jdbc:12.4.2.jre11")
注意:上述语句仅在当前Notebook会话生效,切换会话或重启集群后需要重新执行
内容的提问来源于stack exchange,提问作者Patterson
相关产品推荐
相关产品推荐

