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

求助:Synapse读取Azure文件共享QVD数据遇认证错误,Blob可正常访问

解决Synapse访问Azure文件共享的认证失败问题

你遇到的问题是Synapse读取Azure文件共享时触发认证错误,但同一存储账户的Blob能正常访问,核心原因大概率是文件共享的访问协议、权限或路径配置和Blob存在差异,以下是针对性的解决步骤:

1. 修正ABFSS路径的端点域名

Azure文件共享通过ABFSS协议访问时,必须使用dfs.core.windows.net端点,而非file.core.windows.net——后者是SMB协议的端点,ABFSS不支持。修正你的路径代码:

base_path = f'abfss://fileshare@storagename.dfs.core.windows.net'
adf_path= f'{base_path}/WMOS/WMOS'

2. 检查身份凭证的权限适配

Blob和文件共享的权限体系是分开的,即使Blob的权限有效,文件共享可能没有对应权限:

  • 若使用服务主体:给服务主体分配Storage File Data SMB Share Contributor(或更高)的RBAC角色,不要用Blob相关的角色(比如Storage Blob Data Contributor)。
  • 若使用SAS Token:确保SAS的服务类型包含file,权限勾选读取(r),资源类型覆盖object,同时验证SAS的有效期、签名是否正确。
  • 若使用托管身份:确认Synapse工作区的托管身份被赋予了文件共享的读写权限。

3. 核对存储账户的网络访问设置

如果存储账户开了防火墙,即使Blob能访问,文件共享可能没加入允许列表:

  • 检查存储账户的“网络”设置,确认Synapse工作区的IP地址、虚拟网络被添加到允许访问的范围;
  • 若使用私有端点,确保文件共享的私有端点已正确配置并和Synapse连通。

4. 用简单代码测试连接有效性

在Synapse笔记本中运行以下代码,验证路径和凭证是否正常:

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("TestFileShareAccess").getOrCreate()
# 替换为你实际存在的QVD文件路径
test_file_path = f"{adf_path}/sample.qvd"
df = spark.read.format("qvd").load(test_file_path)
df.show()

如果仍报错,查看当前Spark的认证配置,确认凭证是否正确加载:

# 查看认证类型
print(spark.conf.get("fs.azure.account.auth.type.storagename.dfs.core.windows.net"))
# 若用服务主体,查看客户端ID是否正确
print(spark.conf.get("fs.azure.account.oauth2.client.id.storagename.dfs.core.windows.net"))

5. 确认ADF连接配置(如果涉及ADF联动)

如果是ADF调用Synapse作业处理文件,确保ADF中的连接服务是Azure File Storage类型,而非Blob存储,并且连接使用的凭证(服务主体/SAS)拥有文件共享的访问权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 02:32:35