启用托管专用终结点后,Synapse读取ADLS中Excel文件的故障排查
解决Azure Synapse启用托管专用终结点后无法读取ADLS Excel文件的问题
核心原因分析
启用托管专用终结点后,Synapse工作区的网络访问被限制为私有链路。原代码使用的dfs.core.windows.net(ADLS Gen2的DFS终结点)会被解析到公共IP,但托管专用终结点仅针对blob.core.windows.net(Blob存储终结点)建立私有连接,导致DNS解析失败,触发"Name or service not known"错误。
具体解决步骤
调整文件路径使用Blob存储终结点
将原路径中的dfs.core.windows.net替换为blob.core.windows.net,修改后的代码:pd.read_excel('abfss://bronze@adlsdev.blob.core.windows.net/test/test1.xlsx')托管专用终结点默认适配Blob存储的私有链路配置,使用Blob终结点可让流量走私有连接,规避DNS解析问题。
验证托管专用终结点配置
- 进入Azure门户的Synapse工作区,找到「网络」下的「托管专用终结点」
- 确认已为目标ADLS存储账户创建**类型为Storage(Blob)**的托管专用终结点,且状态为「已批准」
- 若未创建,点击「+ 托管专用终结点」,选择Storage(Blob)类型,关联目标ADLS账户并等待批准
检查存储账户防火墙设置
确保ADLS存储账户的防火墙允许Synapse工作区的私有网络访问:- 进入ADLS存储账户的「网络」设置
- 在「防火墙和虚拟网络」选项卡,选择「允许从选定的网络访问」
- 添加Synapse工作区的托管虚拟网络,或勾选「允许受信任的Microsoft服务访问此存储账户」用于快速验证
确认Spark配置(若使用Synapse Spark池)
如果使用Synapse Spark池,需确保Spark配置未强制使用公共终结点,可在Notebook的「Spark会话配置」中添加以下项(若使用MSI认证,需确保MSI拥有存储账户的Blob数据Contributor权限):spark.conf.set("fs.azure.account.auth.type.adlsdev.dfs.core.windows.net", "OAuth") spark.conf.set("fs.azure.account.oauth.provider.type.adlsdev.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
额外验证点
- 确认存储容器名称(bronze)和文件路径(test/test1.xlsx)无拼写错误
- 检查Synapse Notebook使用的计算池(Spark或Serverless SQL)已关联到托管虚拟网络
内容的提问来源于stack exchange,提问作者LJRB
相关产品推荐
相关产品推荐

