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

如何用Delta-rs Python API连接并认证Azure Data Lake Storage Gen2的Delta表?

使用Delta-rs Python API连接Azure Data Lake Storage Gen2的Delta表分步指南

1. 先装依赖

直接用pip安装delta-rs的Python包即可,命令:

pip install deltalake

建议用Python 3.8及以上版本,避免版本兼容问题。

2. 准备Azure认证信息

ADLS Gen2常用两种认证方式,挑你适用的来:

方式一:SAS密钥认证

得备好这几个信息:

  • 存储账户名称(从Azure门户的存储账户页面复制)
  • 容器名称(ADLS Gen2里的容器名)
  • SAS密钥(Azure门户里生成的,要确保包含对目标Delta表的读/写权限,权限不够会报错)

方式二:服务主体(SPN)认证

需要提前在Azure AD里注册好服务主体,拿到以下信息:

  • 存储账户名称
  • 容器名称
  • 租户ID(Azure AD的租户ID)
  • 客户端ID(服务主体的应用ID)
  • 客户端密钥(服务主体的密码)
    另外,要给这个服务主体分配存储容器的Storage Blob Data Contributor角色,不然没权限访问数据。

3. 连接Delta表的代码示例

用SAS密钥连接

from deltalake import DeltaTable

# 替换成你的实际信息
storage_account = "你的存储账户名"
container = "你的容器名"
sas_key = "你的SAS密钥"
delta_table_path = f"az://{container}/delta表的路径"  # 示例:az://my-container/datasets/user-delta-table

# 配置存储参数
storage_options = {
    "azure_storage_account_name": storage_account,
    "azure_sas_key": sas_key
}

# 加载Delta表
delta_table = DeltaTable(delta_table_path, storage_options=storage_options)

# 验证连接成功:查看表结构和数据
print("Delta表结构:")
print(delta_table.schema().json())

print("\n前5行数据:")
print(delta_table.to_pandas().head())

用服务主体连接

from deltalake import DeltaTable

# 替换成你的实际信息
storage_account = "你的存储账户名"
container = "你的容器名"
tenant_id = "你的租户ID"
client_id = "你的服务主体客户端ID"
client_secret = "你的服务主体客户端密钥"
delta_table_path = f"az://{container}/delta表的路径"

# 配置存储参数
storage_options = {
    "azure_storage_account_name": storage_account,
    "azure_tenant_id": tenant_id,
    "azure_client_id": client_id,
    "azure_client_secret": client_secret
}

# 加载Delta表
delta_table = DeltaTable(delta_table_path, storage_options=storage_options)

# 验证连接成功:查看表版本和分区
print("Delta表当前版本:")
print(delta_table.version())

print("\n表的分区信息:")
print(delta_table.partitions())

4. 常见坑排查

  • 路径格式别错:必须是az://<容器名>/<表路径>,存储账户不用写在路径里,单独通过azure_storage_account_name参数传
  • SAS密钥权限要够:至少要有Read权限(读表),如果要写表得加Write、Delete等权限
  • 服务主体角色要到位:必须给服务主体分配Storage Blob Data Contributor(或更细粒度的对应权限),只给Contributor没用,因为那是资源管理权限,不是数据权限
  • 网络问题:如果是内网环境,检查是否能访问Azure存储端点,需要的话可以在storage_options里加azure_proxy参数配置代理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:43:23