跳转到主要内容

使用fsspec和dask访问Azure Datalake Gen1

项目描述

用于Azure-Datalake Gen1和Gen2存储的文件系统接口

PyPI version shields.io Latest conda-forge version

快速入门

可以使用以下命令安装此软件包

pip install adlfs

conda install -c conda-forge adlfs

adl://abfs:// 协议已包含在fsspec > 0.6.1的已知实现注册表中,否则用户必须明确通知fsspec支持的adlfs协议。

要使用Gen1文件系统

import dask.dataframe as dd

storage_options={'tenant_id': TENANT_ID, 'client_id': CLIENT_ID, 'client_secret': CLIENT_SECRET}

dd.read_csv('adl://{STORE_NAME}/{FOLDER}/*.csv', storage_options=storage_options)

要使用Gen2文件系统,您可以使用协议 abfsaz

import dask.dataframe as dd

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)

Accepted protocol / uri formats include:
'PROTOCOL://container/path-part/file'
'PROTOCOL://container@account.dfs.core.windows.net/path-part/file'

or optionally, if AZURE_STORAGE_ACCOUNT_NAME and an AZURE_STORAGE_<CREDENTIAL> is 
set as an environmental variable, then storage_options will be read from the environmental
variables

要从公共存储blob读取,您需要指定 'account_name'。例如,您可以访问 纽约出租车和豪华轿车委员会 作为

storage_options = {'account_name': 'azureopendatastorage'}
ddf = dd.read_parquet('az://nyctlc/green/puYear=2019/puMonth=*/*.parquet', storage_options=storage_options)

详情

本包包含适用于 Azure Data Lake Gen1 和 Azure Data Lake Gen2 的 Pythonic 文件系统实现,简化了 Azure Data Lake 实现和 Dask 之间的交互。这是通过利用 intake/filesystem_spec 基类和 Azure Python SDK 实现的。

目前,对 Gen1 Data Lake 的操作仅支持使用具有适当凭据的 Azure ServicePrincipal 在所选资源上执行操作。

Gen2 Data Lake 的操作通过利用 Azure Blob Storage Python SDK 实现。

设置凭据

storage_options 可以根据文件系统使用不同的关键字参数进行实例化。最常用的参数包括

  • connection_string
  • account_name
  • account_key
  • sas_token
  • tenant_idclient_idclient_secret 结合用于 Azure ServicePrincipal,例如 storage_options={'account_name': ACCOUNT_NAME, 'tenant_id': TENANT_ID, 'client_id': CLIENT_ID, 'client_secret': CLIENT_SECRET}
  • anon:布尔值,可选。如果没有提供其他凭据,将尝试匿名访问的值。默认情况下(None),会检查 AZURE_STORAGE_ANON 环境变量。False 值(false0f)将解析为 False 并不会尝试匿名访问。否则,anon 的值解析为 True。
  • location_mode:有效值是 "primary" 或 "secondary",适用于 RA-GRS 账户

有关更多参数详细信息,请参阅 AzureBlobFileSystem 的所有参数AzureDatalakeFileSystem 的所有参数

以下环境变量也可以设置并用于身份验证

  • "AZURE_STORAGE_CONNECTION_STRING"
  • "AZURE_STORAGE_ACCOUNT_NAME"
  • "AZURE_STORAGE_ACCOUNT_KEY"
  • "AZURE_STORAGE_SAS_TOKEN"
  • "AZURE_STORAGE_TENANT_ID"
  • "AZURE_STORAGE_CLIENT_ID"
  • "AZURE_STORAGE_CLIENT_SECRET"

根据各种 storage_options 组合,可以为不同的用例实例化文件系统。以下列表描述了使用 AzureBlobFileSystem(即协议 abfsaz)的一些常见用例。请注意,所有情况都需要提供 account_name 参数

  1. 匿名连接到公共容器:storage_options={'account_name': ACCOUNT_NAME, 'anon': True} 将假定 ACCOUNT_NAME 指向公共容器,并尝试使用匿名登录。注意,anon 的默认值为 True。
  2. 使用 Azure 的 DefaultAzureCredential() 库自动解决凭据:storage_options={'account_name': ACCOUNT_NAME, 'anon': False} 将使用 DefaultAzureCredential 获取对容器 ACCOUNT_NAME 的有效凭据。DefaultAzureCredential 尝试通过以下机制和顺序进行身份验证:此处可视化
  3. 不需要 storage_options 自动解决凭据:将 AZURE_STORAGE_ANON 设置为 false,从而自动解决凭据。这对于与 fsspec 兼容非常有用。
  4. Azure ServicePrincipal:tenant_idclient_idclient_secret 都用作 Azure ServicePrincipal 的凭据:例如 storage_options={'account_name': ACCOUNT_NAME, 'tenant_id': TENANT_ID, 'client_id': CLIENT_ID, 'client_secret': CLIENT_SECRET}

追加 Blob

AzureBlobFileSystem 接受所有 Async BlobServiceClient 参数

默认情况下,写入操作会在Azure中创建BlockBlobs,一旦写入,就不能再追加。在创建和操作Blob时,可以使用mode="ab"来创建AppendBlob。当前,如果启用了分层命名空间,则不可用AppendBlobs。

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

adlfs-2024.7.0.tar.gz (48.6 kB 查看散列)

上传时间

构建分布

adlfs-2024.7.0-py3-none-any.whl (41.3 kB 查看散列)

上传时间 Python 3

支持者