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

在Azure Databricks挂载存储容器时遭遇StringIndexOutOfBoundsException错误求助

问题分析与解决方案

错误根源

你代码里的核心问题是混淆了存储账户名称和访问密钥的获取逻辑:

  • storage_account_name被错误赋值为从密钥范围获取的AccessKey(这实际是访问密钥值),而非存储账户的名称。
  • 用错误的"账户名"拼接wasbs路径和配置项时,会生成格式非法的字符串,触发StringIndexOutOfBoundsException索引越界错误。

修正后的挂载代码

先确认密钥范围中存储的密钥:

  • 确保有一个密钥存储存储账户名称(比如密钥名设为storage-account-name)
  • 另一个密钥存储存储账户访问密钥(即你现有的Accessprimary-key)

修改后的代码如下:

scope = 'myscope'
# 获取存储账户名称(替换为你密钥范围中对应存储账户名的密钥key)
storage_account_name = dbutils.secrets.get(scope=scope, key="storage-account-name")
# 获取存储账户访问密钥
storage_account_access_key = dbutils.secrets.get(scope=scope, key="Accessprimary-key")
cont="reference"
configs = {f"fs.azure.account.key.{storage_account_name}.blob.core.windows.net":storage_account_access_key}

dbutils.fs.mount(
  source = f"wasbs://{cont}@{storage_account_name}.blob.core.windows.net/",
  mount_point = f"/mnt/{cont}",
  extra_configs = configs
)

额外验证步骤

  • 先确认挂载点未被占用,执行以下命令卸载可能存在的旧挂载(如果有):
    dbutils.fs.unmount("/mnt/reference")
    
  • 验证存储账户名称和密钥的正确性(仅测试用,生产环境禁止打印密钥):
    print("存储账户名:", storage_account_name)
    # 仅验证密钥开头格式是否符合Base64规范
    print("密钥开头:", storage_account_access_key[:5])
    
    确保存储账户名称是小写字母+数字的短字符串,访问密钥是长串的Base64格式字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:46:02