Azure Databricks创建非Gen2存储账户外部位置遇wasbs协议错误求解决
解决Azure Databricks外部位置不支持wasbs协议的问题
方案1:改用挂载方式(无需Unity Catalog)
如果不需要通过Unity Catalog管理存储,直接用挂载就能访问传统Blob存储:
- 执行以下代码完成挂载(替换占位符为你的存储信息):
dbutils.fs.mount( source = "wasbs://container@storageaccount.blob.core.windows.net/", mount_point = "/mnt/my_blob_storage", extra_configs = {"fs.azure.account.key.storageaccount.blob.core.windows.net": "你的存储账户密钥"} ) - 挂载成功后,直接通过
/mnt/my_blob_storage路径读写存储里的数据。
方案2:升级存储账户为ADLS Gen2(适配Unity Catalog)
Unity Catalog的外部位置只认abfss这类协议,不支持wasbs,所以得把传统Blob存储升级成ADLS Gen2:
- 登录Azure门户,找到目标存储账户,进入「数据湖存储 Gen2」页面,开启分层命名空间(注意:升级不可逆,先确认业务不受影响)。
- 升级完成后,用abfss格式的URL创建外部位置:
abfss://container@storageaccount.dfs.core.windows.net/ - 配置对应的访问凭证(服务主体、托管标识或SAS令牌),就能完成外部位置的创建。
替代方案(无法升级时)
如果不能升级存储账户又要用到Unity Catalog,只能把数据迁移到已有的ADLS Gen2存储账户,再在Databricks里配置外部位置。
内容的提问来源于stack exchange,提问作者AnotherGeek
相关产品推荐
相关产品推荐

