Azure ML Studio Notebook读取ADLS Gen2数据存储遇协议未知错误
解决Azure ML Notebook读取ADLS Gen2数据存储的错误
错误原因
你遇到的ValueError: Protocol not known: azureml,是因为pandas默认不识别azureml://协议,无法直接通过该URL读取数据。以下是两种可行的解决方法:
方法1:使用Azure ML SDK直接访问数据存储
通过Azure ML SDK获取数据存储对象,生成可被pandas识别的路径,或下载文件到本地后读取:
步骤1:连接到Azure ML工作区
from azureml.core import Workspace, Datastore # 在Azure ML Notebook中运行时,可直接用该方法加载工作区配置 ws = Workspace.from_config()
步骤2:获取目标数据存储
# 替换为你的数据存储名称 datastore_name = "your_datastore_name" datastore = Datastore.get(ws, datastore_name)
步骤3:读取数据的两种方式
方式A:生成ADLS Gen2原生路径(推荐)
针对ADLS Gen2数据存储,生成abfss://协议路径,pandas可直接识别:
import pandas as pd # 替换为你的文件相对路径 file_path = datastore.path("path_name/file.csv").as_mount() df = pd.read_csv(file_path)
方式B:下载文件到本地后读取
import pandas as pd import os # 下载文件到本地临时目录 download_path = os.path.join(os.getcwd(), "temp_file.csv") datastore.download(target_path=download_path, prefix="path_name/file.csv", overwrite=True) # 读取本地文件 df = pd.read_csv(download_path)
方法2:安装azureml-fsspec库支持azureml://协议
安装azureml-fsspec后,fsspec可识别azureml://协议,pandas即可直接读取:
步骤1:安装依赖库
pip install azureml-fsspec
步骤2:直接读取数据
需先连接工作区,确保库能解析azureml://路径:
import pandas as pd from azureml.core import Workspace ws = Workspace.from_config() # 替换为你的数据存储和文件路径 path = "azureml://datastores/your_datastore_name/paths/path_name/file.csv" df = pd.read_csv(path)
注意事项
- 确保Notebook所在的计算实例拥有访问ADLS Gen2存储账户的权限(如服务主体、托管标识或SAS令牌)。
- 使用
as_mount()方式时,计算实例需支持存储挂载(大部分Azure ML计算实例默认支持)。
内容的提问来源于stack exchange,提问作者J. Doe
相关产品推荐
相关产品推荐

