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

如何使用Scala通过服务主体连接Azure SQL Server

Scala 基于服务主体连接Azure数据库(JDBC方案)

前置依赖

首先需要在项目中引入以下依赖,用于Azure AD令牌生成和SQL Server JDBC连接:

  • 令牌生成依赖:com.microsoft.azure:adal4j:1.6.7(版本可根据实际场景选择适配版)
  • SQL Server Spark连接器依赖:com.microsoft.azure:spark-mssql-connector_2.12:1.3.0-BETA(适配Spark 3.x版本,如使用Spark 2.x可选择对应版本)
  • JDBC驱动依赖:com.microsoft.sqlserver:mssql-jdbc:9.4.1.jre11

步骤1:生成Azure AD访问令牌

对应你给出的Python实现,Scala侧使用adal4j生成访问令牌的代码如下:

import com.microsoft.aad.adal4j.AuthenticationContext
import java.util.concurrent.Executors

// 配置参数
val tenantId: String = "<< 你的Azure租户ID >>" // 可在Azure门户的应用注册中获取
val resourceAppIdUrl: String = "https://database.windows.net/"
val servicePrincipalId: String = "<< 你的服务主体应用ID >>"
val servicePrincipalSecret: String = "<< 你的服务主体密钥 >>"

val authority = s"https://login.windows.net/$tenantId"
val executorService = Executors.newFixedThreadPool(1)
val context = new AuthenticationContext(authority, false, executorService)

// 异步获取令牌,同步等待返回结果
val future = context.acquireToken(
  resourceAppIdUrl,
  servicePrincipalId,
  servicePrincipalSecret,
  null
)
val accessToken = future.get().getAccessToken

// 关闭线程池
executorService.shutdown()

步骤2:通过Spark JDBC连接Azure数据库

拿到令牌后,即可通过JDBC方式读取数据,逻辑和Python实现完全对齐:

val jdbcUrl: String = "<< 你的Azure数据库JDBC URL,格式为jdbc:sqlserver://<实例名>.database.windows.net:1433;databaseName=<数据库名> >>"
val dbtable: String = "<< 要读取的表名,或自定义查询语句 >>"

val jdbcDf = spark.read
  .format("com.microsoft.sqlserver.jdbc.spark")
  .option("url", jdbcUrl)
  .option("dbtable", dbtable)
  .option("accessToken", accessToken)
  .option("encrypt", "true")
  .option("hostNameInCertificate", "*.database.windows.net")
  .load()

// 测试读取结果
jdbcDf.show()

注意事项

  • 请确保服务主体已经被授予对应Azure数据库的访问权限,否则会出现权限不足的连接报错
  • 如果是在Databricks环境运行,无需手动引入上述依赖,Databricks runtime已内置相关组件,可直接使用代码
  • 生产环境中不要硬编码服务主体密钥、租户ID等敏感信息,建议通过密钥管理服务存储和读取敏感参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:48:05