adlfs:给 Azure 存储加一层 Pythonic 文件系统接口
文章目录
- adlfs:给 Azure 存储加一层 Pythonic 文件系统接口
- 1、这项目干什么的
- 2、安装
- 3、基本用法
- 4、认证方式
- 5、Blob 类型与限制
- 6、适合谁用
adlfs:给 Azure 存储加一层 Pythonic 文件系统接口
adlfs 拿到 209 Star,属于 fsspec 生态的一员。它为 Azure Blob Storage 和 Azure Data Lake Storage Gen2 提供文件系统抽象,让 Python 开发者能用熟悉的文件操作语义读写云端数据。
1、这项目干什么的
adlfs 的核心定位是把 Azure 对象存储包装成标准文件系统接口。开发者不需要直接调用 Azure SDK 的底层 API,而是用 open、read、write 这类常规操作来处理云端文件。
它向 fsspec 注册了两个 URI 协议:az://和abfs://。这意味着 Dask、Pandas 这类数据处理工具可以直接从 Azure 加载 CSV、Parquet 等格式,像操作本地文件一样自然。
2、安装
安装方式有两种,pip 或 conda 任选:
pipinstalladlfscondainstall-cconda-forge adlfs安装完成后,az://和abfs://自动进入 fsspec 的 known_implementations 注册表,无需额外配置。
3、基本用法
连接 Azure 存储时,需要指定 account_name,并配合一种认证凭证。最常见的是 account_key:
importdask.dataframeasdd storage_options={'account_name':ACCOUNT_NAME,'account_key':ACCOUNT_KEY}ddf=dd.read_csv('abfs://container/folder/*.csv',storage_options=storage_options)ddf=dd.read_parquet('az://container/folder.parquet',storage_options=storage_options)URI 格式支持三种写法:
PROTOCOL://container/path/file PROTOCOL://container@account.blob.core.windows.net/path/file PROTOCOL://container@account.dfs.core.windows.net/path/file也支持通过环境变量传递凭证。设置 AZURE_STORAGE_ACCOUNT_NAME 和对应凭证变量后,storage_options 会自动读取。
4、认证方式
adlfs 支持的认证选项比较全:
- connection_string:完整连接字符串
- account_name + account_key:账户密钥
- sas_token:共享访问签名
- tenant_id + client_id + client_secret:Azure ServicePrincipal
- anon=True:匿名访问,用于公共容器
- 默认行为:未提供凭证时自动调用 DefaultAzureCredential
DefaultAzureCredential 会按 Azure 预定义的顺序尝试多种认证机制,包括环境变量、托管身份、Azure CLI 登录等。
5、Blob 类型与限制
默认写入创建 BlockBlob,写入后不可追加。需要追加写入的场景可以用mode="ab"创建 AppendBlob。 hierarchal namespaces 启用时,AppendBlob 功能不可用。
ADLS Gen1 已在 2024 年退役,adlfs 中的adl://协议也同步废弃。
6、适合谁用
- 用 Python 处理 Azure 存储数据的工程师
- 在 Dask 分布式场景下读写 Azure Blob 或 ADLS Gen2 的团队
- 希望统一文件系统抽象、减少直接调用 Azure SDK 的项目
在 Dask 分布式场景下读写 Azure Blob 或 ADLS Gen2 的团队
- 希望统一文件系统抽象、减少直接调用 Azure SDK 的项目
