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

如何通过Databricks Terraform在Unity Catalog共享集群安装ADLS的wheel包

如何通过Databricks Terraform Provider从ADLS安装自定义Wheel库到Unity Catalog共享集群?

问题背景

已配置Unity Catalog共享模式的Databricks集群,且集群spark_conf已正确设置ADLS连接信息(无需挂载容器),手动从ADLS路径abfss://<container>@<ADLS_name>.dfs.core.windows.net/<wheel_library>.whl安装Wheel库正常,但使用databricks_library资源时触发报错。

尝试的Terraform配置

resource "databricks_library" "databricks_adls_lib" {
  cluster_id = module.<cluster_resource>.cluster_id
  whl        = "abfss://<container>@<ADLS_name>.dfs.core.windows.net/<wheel_library>.whl"
}

报错信息

Error: Method public com.databricks.backend.daemon.dbutils.DBUtilsCore$Result com.databricks.backend.daemon.dbutils.DBUtilsCore.refreshMounts() is not whitelisted on class class com.databricks.backend.daemon.dbutils.DBUtilsCore

解决方案

问题根源

databricks_library资源底层会调用DBUtils的refreshMounts方法处理非DBFS路径,但Unity Catalog共享集群出于安全限制,禁用了该方法的调用,导致报错。

可行方案1:将库配置嵌入databricks_cluster资源

直接在集群定义的libraries字段中添加ADLS路径的Wheel库,绕过单独databricks_library资源的DBUtils依赖:

resource "databricks_cluster" "shared_cluster" {
  # 其他集群基础配置(如实例池、节点类型等)
  spark_conf = {
    # 已配置的ADLS连接信息示例
    "fs.azure.account.auth.type.<ADLS_name>.dfs.core.windows.net" = "OAuth"
    "fs.azure.account.oauth.provider.type.<ADLS_name>.dfs.core.windows.net" = "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider"
    "fs.azure.account.oauth2.client.id.<ADLS_name>.dfs.core.windows.net" = var.client_id
    "fs.azure.account.oauth2.client.secret.<ADLS_name>.dfs.core.windows.net" = var.client_secret
    "fs.azure.account.oauth2.client.endpoint.<ADLS_name>.dfs.core.windows.net" = "https://login.microsoftonline.com/${var.tenant_id}/oauth2/token"
  }

  # 嵌入Wheel库配置
  libraries {
    whl = "abfss://<container>@<ADLS_name>.dfs.core.windows.net/<wheel_library>.whl"
  }
}

如果使用模块管理集群,只需在模块内部的databricks_cluster资源中添加上述libraries块即可。

可行方案2:使用Unity Catalog外部位置路径(推荐)

如果已在Unity Catalog中配置了指向ADLS容器的外部位置,可直接使用UC路径引用Wheel库,更符合UC共享集群的权限模型:

# 嵌入集群配置的方式
resource "databricks_cluster" "shared_cluster" {
  # 其他配置...
  libraries {
    whl = "uc://<catalog>.<schema>.<external_location>/<wheel_library>.whl"
  }
}

# 若必须使用单独库资源(UC路径无DBUtils依赖问题)
resource "databricks_library" "databricks_uc_lib" {
  cluster_id = module.<cluster_resource>.cluster_id
  whl        = "uc://<catalog>.<schema>.<external_location>/<wheel_library>.whl"
}

支持性说明

  • 直接在databricks_cluster资源中嵌入库配置的方式是Databricks Terraform Provider官方支持的,完全兼容Unity Catalog共享集群场景。
  • 单独的databricks_library资源目前在Unity Catalog共享集群中处理abfss路径存在兼容性问题,不推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 00:22:19