如何使用Hugging Face load_dataset()从Azure Blob存储加载数据集
解决Hugging Face load_dataset加载Azure Blob数据集的问题
问题根源
你直接把abfs://路径传给load_dataset()的第一个参数,会被当成数据集名称去本地或Hugging Face Hub查找,而非指向远程存储路径,这是报错的核心原因。另外az://是Azure CLI专用路径格式,Hugging Face datasets库不支持,统一使用abfs://即可。
正确实现方案
1. 安装依赖
确保所有必要包已安装:
pip install datasets adlfs azure-storage-blob
2. 直接指定格式+远程路径(推荐)
针对CSV、JSON、Parquet等标准格式数据集,通过data_files参数指定Blob路径,配合storage_options传入Azure认证信息:
from datasets import load_dataset # Azure存储配置 storage_options = { "connection_string": "DefaultEndpointsProtocol=https;AccountName=acname;AccountKey=key;EndpointSuffix=core.windows.net" } # 加载Blob中单个CSV文件 data = load_dataset( "csv", # 替换为你的数据集格式:json/parquet/text等 data_files="abfs://ctnr-invoices/your-data-file.csv", # 容器名+文件路径 storage_options=storage_options ) # 加载Blob中整个目录的同格式文件(用通配符) data = load_dataset( "parquet", data_files="abfs://ctnr-invoices/*.parquet", storage_options=storage_options )
3. 结合已创建的AzureBlobFileSystem实例
如果已经手动初始化了AzureBlobFileSystem,直接通过fs参数传入即可:
from datasets import load_dataset from adlfs import AzureBlobFileSystem # 创建文件系统实例 fs = AzureBlobFileSystem( connection_string="DefaultEndpointsProtocol=https;AccountName=acname;AccountKey=key;EndpointSuffix=core.windows.net" ) # 加载数据集 data = load_dataset( "json", data_files="abfs://ctnr-invoices/your-data.json", fs=fs )
关键注意事项
- 必须明确指定数据集格式,
load_dataset()第一个参数不能省略或填路径 abfs://路径格式为abfs://<容器名>/<文件/目录路径>,请确认容器名称和文件路径正确- 验证Azure存储账号的连接字符串/密钥是否拥有该Blob容器的读取权限
内容的提问来源于stack exchange,提问作者lte__
相关产品推荐
相关产品推荐

