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

如何以Service Principal身份在Databricks中将DataFrame写入Azure SQL

使用Spark通过Service Principal将DataFrame写入Azure SQL

你可以复用已有的Service Principal令牌获取逻辑,通过spark.write接口完成DataFrame写入,核心配置和读取时一致,仅需调整写入模式和目标表参数:

完整写入代码

# 复用你已有的Service Principal令牌获取代码
context = adal.AuthenticationContext(authority)
token = context.acquire_token_with_client_credentials(resource_app_id_url, service_principal_id, service_principal_secret)
access_token = token["accessToken"]

# 执行DataFrame写入操作
Df.write \
  .format("com.microsoft.sqlserver.jdbc.spark") \
  .option("url", azure_sql_url) \
  .option("dbtable", "目标表名")  # 替换为你要写入的Azure SQL表名
  .option("databaseName", database_name) \
  .option("accessToken", access_token) \
  .option("encrypt", "true") \
  .option("hostNameInCertificate", "*.database.windows.net") \
  .mode("append")  # 写入模式,按需替换
  .save()

关键注意事项

  • 写入模式选择:
    • append:在现有表中追加数据(常用)
    • overwrite:清空目标表后写入新数据
    • ignore:若目标表已存在则跳过写入
    • error(默认):若目标表已存在则抛出异常
  • 表结构兼容:DataFrame的字段名、数据类型必须与Azure SQL目标表完全匹配,否则会写入失败。如果需要自动创建表,可添加option("createTableColumnTypes", "id INT, username VARCHAR(50), create_time DATETIME")指定建表的SQL类型。
  • 权限配置:确保你的Service Principal已被授予Azure SQL数据库的db_datawriter角色(或更高权限),否则会出现权限不足错误。
  • 性能优化:针对大数据量写入,可添加option("batchsize", "10000")设置批量写入的行数,提升写入效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:24:27