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

Databricks 15.4 LTS ARM集群连接Azure Key Vault报错排查求助

排查方向

1. 解决依赖版本冲突问题

java.lang.NoSuchMethodError 通常是依赖版本不兼容导致的:

  • 检查Databricks集群自带的azure-core版本,确保它和你安装的azure-identity、azure-keyvault-secrets版本匹配。ClientOptions.getTracingOptions()是azure-core特定版本新增的方法,若集群自带的azure-core版本过低,就会出现该错误。
  • 优先使用Azure SDK for Java BOM来统一管理所有Azure SDK依赖版本,避免手动指定单个包版本带来的冲突。在Maven依赖中引入BOM后,只需要声明azure-identity和azure-keyvault-secrets即可,无需指定版本:
    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.azure</groupId>
          <artifactId>azure-sdk-bom</artifactId>
          <version>最新稳定版</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    
  • 通过Databricks集群的库依赖页面或执行%sh mvn dependency:tree命令,排查是否存在依赖冲突,排除掉不兼容的旧版本依赖。

2. 适配ARM架构下的HTTP客户端

最初的StacklessClosedChannelException和Netty在ARM架构下的兼容性有关,后续单独添加netty包引发版本冲突,建议:

  • 不要单独引入azure-netty相关包,而是通过Azure SDK BOM自动引入适配当前架构的HTTP客户端依赖。
  • 尝试切换为OkHttp作为HTTP客户端,绕开Netty的ARM适配问题。需要安装azure-core-http-okhttp包(版本和其他Azure SDK保持一致),然后修改代码:
    import com.azure.core.http.okhttp.OkHttpAsyncHttpClientBuilder
    import com.azure.security.keyvault.secrets.SecretClient
    import com.azure.security.keyvault.secrets.models.KeyVaultSecret
    import com.azure.identity.DefaultAzureCredentialBuilder
    import com.azure.security.keyvault.secrets.SecretClientBuilder
    
    val cred = new DefaultAzureCredentialBuilder().build()
    
    val keyVaultClient = new SecretClientBuilder()
        .vaultUrl("https://my-key-vault-name.vault.azure.net/")
        .credential(cred)
        .httpClient(new OkHttpAsyncHttpClientBuilder().build()) // 显式指定OkHttp客户端
        .buildClient()
    
    val result = keyVaultClient.getSecret("secret-name")
    println(result.getValue())
    

3. 针对Databricks Runtime 15.4的特殊检查

  • 查看Databricks官方文档中关于Azure SDK兼容性的说明,确认Runtime 15.4(Java 17、Spark 3.5)推荐的Azure SDK版本范围,避免使用不兼容的旧版本。
  • 检查集群的Java 17兼容性:确保使用的Azure SDK版本明确支持Java 17,部分旧版本Azure SDK对Java 17和ARM架构的组合支持不足。

4. 身份验证流程的ARM环境适配

虽然权限在其他环境正常,但ARM架构下的身份验证链可能存在差异:

  • 尝试显式使用ManagedIdentityCredential替代DefaultAzureCredential,缩小身份验证范围,排查是否是凭据链中某些环节在ARM下出问题:
    import com.azure.identity.ManagedIdentityCredentialBuilder
    val cred = new ManagedIdentityCredentialBuilder().build()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 16:54:57