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

如何将使用adal生成Azure AD令牌连接SQL Server的Python代码转为Scala

Scala 实现通过AD令牌连接SQL Server数据库

前置依赖

首先需要在项目中引入两个核心依赖,以sbt配置为例:

// 微软官方Azure AD认证库,用于获取访问令牌
libraryDependencies += "com.microsoft.aad" % "msal4j" % "1.13.8"
// Azure SQL Server Spark 连接器
libraryDependencies += "com.microsoft.azure" % "azure-sqldb-spark" % "1.0.2"

如果使用Maven,自行转换对应坐标即可。

完整实现代码

代码逻辑与你提供的Python版本完全对齐,分为令牌获取和数据读取两个部分:

import com.microsoft.aad.msal4j.{ClientCredentialParameters, ConfidentialClientApplication}
import org.apache.spark.sql.SparkSession
import java.util.Collections

// 自定义配置项,替换为实际业务值即可
val AUTHORITY_URL = "https://login.microsoftonline.com/<你的Azure租户ID>"
val CLIENT_ID = "<你的应用客户端ID>"
val CLIENT_SECRET = "<你的应用客户端密钥>"
val SQL_JDBC_URL = "jdbc:sqlserver://<SQL服务器名>.database.windows.net:1433;database=<数据库名>"

// 1. 获取AD访问令牌,对应Python版本的adal调用逻辑
val clientApp = ConfidentialClientApplication
  .builder(CLIENT_ID, CLIENT_SECRET)
  .authority(AUTHORITY_URL)
  .build()

val scopes = Collections.singleton("https://database.windows.net/.default")
val tokenParams = ClientCredentialParameters.builder(scopes).build()
val accessToken = clientApp.acquireToken(tokenParams).join().accessToken()

// 2. Spark读取SQL Server数据,参数与Python版本完全一致
val spark = SparkSession.builder()
  .appName("ADAuthSQLQuery")
  .getOrCreate()

val df = spark.read
  .format("com.microsoft.sqlserver.jdbc.spark")
  .option("url", SQL_JDBC_URL)
  .option("dbtable", "tab1")
  .option("accessToken", accessToken)
  .option("hostNameInCertificate", "*.database.windows.net")
  .load()

df.show()

补充说明:如果你仍需兼容旧版ADAL库,仅需替换令牌获取部分的代码即可,Spark读取逻辑无需做任何调整

内容的提问来源于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 14:03:00