使用fsspec和dask访问Azure Datalake Gen1
项目描述
用于Azure-Datalake Gen1和Gen2存储的文件系统接口
快速入门
可以使用以下命令安装此软件包
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文件系统,您可以使用协议 abfs 或 az
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_stringaccount_nameaccount_keysas_tokentenant_id、client_id和client_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 值(false、0、f)将解析为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(即协议 abfs 或 az)的一些常见用例。请注意,所有情况都需要提供 account_name 参数
- 匿名连接到公共容器:
storage_options={'account_name': ACCOUNT_NAME, 'anon': True}将假定ACCOUNT_NAME指向公共容器,并尝试使用匿名登录。注意,anon的默认值为 True。 - 使用 Azure 的 DefaultAzureCredential() 库自动解决凭据:
storage_options={'account_name': ACCOUNT_NAME, 'anon': False}将使用DefaultAzureCredential获取对容器ACCOUNT_NAME的有效凭据。DefaultAzureCredential尝试通过以下机制和顺序进行身份验证:此处可视化。 - 不需要
storage_options自动解决凭据:将AZURE_STORAGE_ANON设置为false,从而自动解决凭据。这对于与 fsspec 兼容非常有用。 - Azure ServicePrincipal:
tenant_id、client_id和client_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。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。