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

ADF通过链接服务创建带ABFSS存储初始化脚本的Databricks集群时遇文件未找到错误求助

ADF通过链接服务创建带ABFSS存储初始化脚本的Databricks集群时遇文件未找到错误求助

我来帮你解决这个问题!之前我也碰到过类似的情况——ADF的Databricks链接服务UI确实没有直接提供选择初始化脚本位置类型的选项,但我们可以通过手动配置集群的JSON参数来绕开这个限制,顺利使用ABFSS存储的初始化脚本。

问题根源

Databricks弃用DBFS初始化脚本后,我们需要切换到ABFSS这类外部存储的脚本,但ADF的默认集群配置UI没有暴露“脚本位置类型”的选项,导致集群仍按DBFS的逻辑解析路径,自然找不到ABFSS里的文件。

具体解决步骤

1. 先确保Databricks集群能访问你的ABFSS存储

你需要给集群配置访问ABFSS的认证信息,推荐用Azure AD服务主体来做身份验证:

  • 在集群的Spark配置里添加以下参数(替换成你的存储账户、服务主体信息):
    fs.azure.account.auth.type.<你的存储账户名>.dfs.core.windows.net OAuth
    fs.azure.account.oauth.provider.type.<你的存储账户名>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
    fs.azure.account.oauth2.client.id.<你的存储账户名>.dfs.core.windows.net <你的服务主体ID>
    fs.azure.account.oauth2.client.secret.<你的存储账户名>.dfs.core.windows.net <你的服务主体密钥>
    fs.azure.account.oauth2.client.endpoint.<你的存储账户名>.dfs.core.windows.net https://login.microsoftonline.com/<你的租户ID>/oauth2/token
    
  • 同时要确认:服务主体对目标容器有读取权限;如果存储账户设置了VNet/防火墙限制,要把Databricks集群所在的VNet加入允许访问列表。

2. 在ADF中手动用JSON配置集群初始化脚本

ADF的UI没显示位置类型选项,但我们可以通过自定义集群配置的JSON来指定ABFSS类型的脚本:

  • 在ADF的Databricks活动(比如Notebook活动)里,选择“新建集群”,然后在“集群配置”中切换到“自定义”模式。
  • 点击“编辑JSON”,把以下结构添加到配置里(替换成你的ABFSS路径和认证参数):
    {
      "init_scripts": [
        {
          "abfss": {
            "destination": "abfss://<容器名>@<存储账户名>.dfs.core.windows.net/<脚本所在路径>/your-init-script.sh"
          }
        }
      ],
      "spark_conf": {
        "fs.azure.account.auth.type.<你的存储账户名>.dfs.core.windows.net": "OAuth",
        "fs.azure.account.oauth.provider.type.<你的存储账户名>.dfs.core.windows.net": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
        "fs.azure.account.oauth2.client.id.<你的存储账户名>.dfs.core.windows.net": "<服务主体ID>",
        "fs.azure.account.oauth2.client.secret.<你的存储账户名>.dfs.core.windows.net": "<服务主体密钥>",
        "fs.azure.account.oauth2.client.endpoint.<你的存储账户名>.dfs.core.windows.net": "https://login.microsoftonline.com/<租户ID>/oauth2/token"
      }
    }
    
  • 保存配置后运行Pipeline,集群启动时就会自动从ABFSS路径拉取并执行初始化脚本了。

3. 验证与排查

  • 先确认ABFSS路径完全正确:容器名、存储账户名、脚本路径、文件名都区分大小写,别拼错。
  • 可以先在Databricks工作区手动创建一个集群,用同样的ABFSS脚本路径和Spark配置,确认集群能正常启动并执行脚本,排除存储权限或路径本身的问题。
  • 如果还是报错,去Databricks集群的“日志”标签里找初始化脚本的日志,看具体是权限不足还是路径错误。

备注:内容来源于stack exchange,提问作者Ancil Pa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 11:53:09