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

使用Synapse Analytics将Dataframe写入SQL专用数据库问题咨询

问题根因

  • com.databricks.spark.sqldw是Databricks平台专属的连接器,Azure Synapse自带的Spark池未内置该依赖,因此运行时报类不存在错误。
  • 直接调用saveAsTable默认写入的是Synapse Spark内置的Hive元数据库,而非你创建的专用SQL池实例。

解决方案

优先使用Azure Synapse Spark原生内置的synapsesql连接器实现写入,该方式底层通过批量导入能力实现,性能远高于普通JDBC写入:

# 读取ADLS Gen2的Delta表
df = spark.read.format("delta").load(BronzePath)

# 写入专用SQL池,替换尖括号内的内容为你的实际资源名
df.write \
  .format("synapsesql") \
  .mode("overwrite") \
  .option("table", "<专用SQL池名称>.<目标数据库名>.<目标表名>") \
  # 可选配置:指定表分布方式
  .option("distribution", "ROUND_ROBIN") \
  # 可选配置:指定索引类型
  .option("index", "CLUSTERED COLUMNSTORE INDEX") \
  .save()

如果需要使用JDBC方式写入小批量数据,可使用如下代码:

# 替换连接字符串中占位符为你的实际配置
jdbc_url = "jdbc:sqlserver://<Synapse工作区名>.sql.azuresynapse.net:1433;database=<专用SQL池数据库名>;user=<登录用户名>;password=<登录密码>;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.sql.azuresynapse.net;loginTimeout=30;"

df.write \
  .mode("overwrite") \
  .jdbc(
      url=jdbc_url,
      table="<目标表名>",
      properties={"driver": "com.microsoft.sqlserver.jdbc.SQLServerDriver"}
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:27:03