使用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_string
account_name
account_key
sas_token
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}
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。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。