You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Databricks Notebook写入DataFrame到Azure SQL数据库遇数据源错误

解决Databricks写入Azure SQL时的DATA_SOURCE_NOT_FOUND错误

错误原因

你遇到的org.apache.spark.SparkClassNotFoundException: [DATA_SOURCE_NOT_FOUND] Failed to find data source: com.microsoft.sqlserver.jdbc.spark错误,核心问题是:

  • 你当前加载的是MySQL数据库驱动(mysql-connector-java-6.0.6.jar),但连接Azure SQL需要的是微软Spark SQL Server专用连接器
  • 指定的数据源com.microsoft.sqlserver.jdbc.spark没有对应的驱动支持,导致Spark无法识别该数据源类型

解决方案

1. 安装正确的SQL Server Spark连接器

在Databricks中,推荐优先用集群级安装方式,避免代码重复配置:

  • 打开你的Databricks集群页面,切换到Libraries标签
  • 点击Install New,选择Maven作为库源
  • 在Coordinates输入框中填入对应版本的连接器坐标(示例适配Databricks Runtime 10.0+):
    com.microsoft.azure:spark-mssql-connector_2.12:1.2.0
    
  • 点击Install,等待集群完成库加载

如果需要临时在代码中指定,可修改SparkSession配置,自动从Maven拉取依赖:

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName('SparkByExamples.com')\
    .config("spark.jars.packages", "com.microsoft.azure:spark-mssql-connector_2.12:1.2.0")\
    .getOrCreate()

2. 验证写入代码

你的写入代码格式无误,若要提升兼容性,也可以改用标准JDBC写法(需指定驱动类):

sampleDF.write.format("jdbc") \
  .mode("overwrite") \
  .option("url", "jdbc:sqlserver://sqlservername.database.windows.net;databaseName=sqldbname;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;") \
  .option("dbtable", "df") \
  .option("user", "***") \
  .option("password", "***") \
  .option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver") \
  .save()

若继续使用com.microsoft.sqlserver.jdbc.spark格式,确保连接器已正确加载即可。

额外检查项

  • 确认Databricks集群网络能访问Azure SQL:比如在Azure SQL防火墙规则中添加集群公网IP,或配置VNet对等连接
  • 连接器版本需与Databricks Runtime的Scala版本匹配(Runtime 10.x+默认用Scala 2.12)

内容的提问来源于stack exchange,提问作者Hiwot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 04:47:10