Azure Data Lake Store 文件系统客户端库(Python版)
项目描述
微软Azure Data Lake Store文件系统库(Python版)
本项目是Azure Data Lake Store的Python文件系统库。
安装
要从源安装(用于本地测试和开发)而不是使用pip
> pip install -r dev_requirements.txt
> python setup.py develop
用法:示例代码
要玩代码,以下是一个起点
from azure.datalake.store import core, lib, multithread
token = lib.auth(tenant_id, username, password)
adl = core.AzureDLFileSystem(token, store_name=store_name)
# typical operations
adl.ls('')
adl.ls('tmp/', detail=True)
adl.ls('tmp/', detail=True, invalidate_cache=True)
adl.cat('littlefile')
adl.head('gdelt20150827.csv')
# file-like object
with adl.open('gdelt20150827.csv', blocksize=2**20) as f:
print(f.readline())
print(f.readline())
print(f.readline())
# could have passed f to any function requiring a file object:
# pandas.read_csv(f)
with adl.open('anewfile', 'wb') as f:
# data is written on flush/close, or when buffer is bigger than
# blocksize
f.write(b'important data')
adl.du('anewfile')
# recursively download the whole directory tree with 5 threads and
# 16MB chunks
multithread.ADLDownloader(adl, "", 'my_temp_dir', 5, 2**24)
可以使用形式为track(current, total)的回调函数跟踪进度。当传递时,这将跟踪传输的字节并在每个完整块上调用。
以下是一个使用Azure CLI进度控制器作为progress_callback的示例
from cli.core.application import APPLICATION
def _update_progress(current, total):
hook = APPLICATION.get_progress_controller(det=True)
hook.add(message='Alive', value=current, total_val=total)
if total == current:
hook.end()
...
ADLUploader(client, destination_path, source_path, thread_count, overwrite=overwrite,
chunksize=chunk_size,
buffersize=buffer_size,
blocksize=block_size,
progress_callback=_update_progress)
这将输出进度条到stdout
Alive[######################### ] 40.0881%
Finished[#############################################################] 100.0000%
用法:命令行示例
要更高级别地与API交互,您可以使用提供的命令行界面“samples/cli.py”。您需要设置适当的环境变量
azure_username
azure_password
azure_data_lake_store_name
azure_subscription_id
azure_resource_group_name
azure_service_principal
azure_service_principal_secret
连接到 Azure Data Lake Store。可选地,您可能需要定义 azure_tenant_id
或 azure_data_lake_store_url_suffix
。
以下是一个简单的示例,其中包含更多详细信息。
python samples\cli.py ls -l
不传递参数执行程序以访问文档。
要启动交互式模式的 CLI,请运行“python samples/cli.py”,然后输入“help”以查看所有可用命令(类似于 Unix 工具)。
> python samples/cli.py
azure> help
Documented commands (type help <topic>):
========================================
cat chmod close du get help ls mv quit rmdir touch
chgrp chown df exists head info mkdir put rm tail
azure>
在交互式模式下,您可以运行“ls -l”列出主目录中的条目(“help ls”将显示命令的使用详情)。如果您不熟悉 Unix/Linux 的“ls”命令,则列表示:1)权限,2)文件所有者,3)文件组,4)文件大小,5-7)文件的修改时间,以及 8)文件名。
> python samples/cli.py
azure> ls -l
drwxrwx--- 0123abcd 0123abcd 0 Aug 02 12:44 azure1
-rwxrwx--- 0123abcd 0123abcd 1048576 Jul 25 18:33 abc.csv
-r-xr-xr-x 0123abcd 0123abcd 36 Jul 22 18:32 xyz.csv
drwxrwx--- 0123abcd 0123abcd 0 Aug 03 13:46 tmp
azure> ls -l --human-readable
drwxrwx--- 0123abcd 0123abcd 0B Aug 02 12:44 azure1
-rwxrwx--- 0123abcd 0123abcd 1M Jul 25 18:33 abc.csv
-r-xr-xr-x 0123abcd 0123abcd 36B Jul 22 18:32 xyz.csv
drwxrwx--- 0123abcd 0123abcd 0B Aug 03 13:46 tmp
azure>
要下载远程文件,请运行“get remote-file [本地文件]”。第二个参数“本地文件”是可选的。如果没有提供,本地文件将使用远程文件名减去目录路径命名。
> python samples/cli.py
azure> ls -l
drwxrwx--- 0123abcd 0123abcd 0 Aug 02 12:44 azure1
-rwxrwx--- 0123abcd 0123abcd 1048576 Jul 25 18:33 abc.csv
-r-xr-xr-x 0123abcd 0123abcd 36 Jul 22 18:32 xyz.csv
drwxrwx--- 0123abcd 0123abcd 0 Aug 03 13:46 tmp
azure> get xyz.csv
2016-08-04 18:57:48,603 - ADLFS - DEBUG - Creating empty file xyz.csv
2016-08-04 18:57:48,604 - ADLFS - DEBUG - Fetch: xyz.csv, 0-36
2016-08-04 18:57:49,726 - ADLFS - DEBUG - Downloaded to xyz.csv, byte offset 0
2016-08-04 18:57:49,734 - ADLFS - DEBUG - File downloaded (xyz.csv -> xyz.csv)
azure>
也可以以命令行模式运行,允许在不保留在解释器中的情况下单独执行任何可用命令。
例如,列出主目录中的条目
> python samples/cli.py ls -l
drwxrwx--- 0123abcd 0123abcd 0 Aug 02 12:44 azure1
-rwxrwx--- 0123abcd 0123abcd 1048576 Jul 25 18:33 abc.csv
-r-xr-xr-x 0123abcd 0123abcd 36 Jul 22 18:32 xyz.csv
drwxrwx--- 0123abcd 0123abcd 0 Aug 03 13:46 tmp
>
此外,下载远程文件
> python samples/cli.py get xyz.csv
2016-08-04 18:57:48,603 - ADLFS - DEBUG - Creating empty file xyz.csv
2016-08-04 18:57:48,604 - ADLFS - DEBUG - Fetch: xyz.csv, 0-36
2016-08-04 18:57:49,726 - ADLFS - DEBUG - Downloaded to xyz.csv, byte offset 0
2016-08-04 18:57:49,734 - ADLFS - DEBUG - File downloaded (xyz.csv -> xyz.csv)
>
测试
有关我们测试框架的详细文档,请访问测试文件夹。
需要帮助?
如果您在使用提供的代码时遇到问题,请务必查看 Microsoft Azure 开发者论坛。大多数问题都标记为azure 和 python。
贡献代码或提供反馈
如果您想成为这个项目的积极贡献者,请按照Microsoft Azure 项目贡献指南中提供的说明操作。此外,请查看GUIDANCE.md以获取有关此项目的特定信息。
如果您在库中发现任何错误,请在项目的问题部分中提交问题。
行为准则
本项目采用了Microsoft 开源行为准则。有关更多信息,请参阅行为准则常见问题解答或联系opencode@microsoft.com提出任何额外的问题或意见。
发行历史
0.0.53 (2023-04-11)
添加 MSAL 支持。移除 ADAL 支持
在检测到 pyopenssl 存在时抑制弃用警告
0.0.52 (2020-11-25)
在关闭流时更改日志记录的详细程度
在使用递归 acl 操作时过滤掉文件的默认 acl
0.0.51 (2020-10-15)
添加更多日志记录以调查零字节读取的根原因
0.0.50 (2020-09-10)
修复 ADAL 异常解析重试的 bug
0.0.49 (2020-08-05)
修复 NoRetryPolicy 的 bug
在 travis 配置中移除 Python 3.4、5
修复对 Unicode 的日志记录
0.0.48 (2019-10-18)
缓冲写入以防止内存不足问题
在 travis 配置中添加 Python 3.7
0.0.47 (2019-08-14)
移除令牌日志记录
文档相关更改(添加 readme.md 并修正一些格式)
0.0.46 (2019-06-25)
公开按请求超时。默认为 60。
默认情况下,连接不会重试
修复 bug。
0.0.45 (2019-05-10)
更新 open 和 close ADLFile 语义
重构代码并提高打开文件的性能
0.0.44 (2019-03-05)
向 LISTSTATUS API 调用添加延续令牌
更新 api-version 为 2018-09-01
0.0.43 (2019-03-01)
修复下载器中 glob 返回单个文件时的 bug
0.0.42 (2019-02-26)
更新文档字符串
从递归 acl 操作中移除设置 DEBUG 级别日志记录
0.0.41 (2019-01-31)
移除 GetContentSummary API 调用
将 check_token() 移至重试块下
公开 AdlDownloader 和 AdlUploader 的超时参数
对于零长度读取,抛出异常而不是静默中断
0.0.40 (2019-01-08)
修复零长度读取
移除对自定义 wheel 的依赖并符合 PEP 420
0.0.39 (2018-11-14)
修复读取 response.content 时抛出 Chunked Decoding 异常的问题
0.0.38 (2018-11-12)
添加对递归 acl 函数的支持
修复了由于get_chunk中缺少filesessionid导致的bug
0.0.37 (2018-11-02)
撤销了0.0.35版本中引入的一些更改,这些更改与其他令牌不兼容
0.0.36 (2018-10-31)
修复了refresh_token调用中的拼写错误
0.0.35 (2018-10-29)
添加了获取令牌的重试机制
由于CVE 2018-18074,添加了requests>=2.20
修复了测试参数并更新了测试记录
0.0.34 (2018-10-15)
修复了文件名中包含加号或其他符号时的concat问题
添加了readinto方法
将所有api-version更改为2018-05-01
0.0.32 (2018-10-04)
修复了测试bug
修复了空文件夹上传bug
修复了ADL下载器块大小bug
0.0.31 (2018-09-10)
添加了对批量ls的支持
0.0.30 (2018-08-28)
修复了.travis.yml的顺序以添加azure-nspg依赖项
0.0.29 (2018-08-22)
修复了HISTORY.rst和Pypi文档
0.0.28 (2018-08-20)
添加了从DatalakeBadOffsetException恢复的支持
0.0.27 (2018-08-08)
修复了单个文件检查中的bug
添加了Python2异常兼容性
0.0.26 (2018-08-03)
修复了由于未导入errno导致的bug
修复了os.makedirs竞争条件中的bug
更新了Readme,包括正确的环境变量并修复了一些链接
0.0.25 (2018-07-26)
修复了下载空目录和仅包含单个文件的目录结构的下载问题
0.0.24 (2018-07-16)
对所有操作实现了重试策略,默认为指数重试策略
0.0.23 (2018-07-11)
修复了UNC本地路径中下载位置不正确的问题
0.0.22 (2018-06-02)
对URI中的文件路径进行编码
0.0.21 (2018-06-01)
删除了未使用的msrest依赖项
0.0.20 (2018-05-25)
确保sdist与wheel 0.31.0的兼容性
0.0.19 (2018-03-14)
修复了上传问题,其中在上传包含单个文件的目录时目标文件名错误 #208
0.0.18 (2018-02-05)
修复了在执行位置读取时整个文件被缓存的读取问题 #198
同样修复了readline问题
0.0.17 (2017-09-21)
修复了README.rst缩进错误
更改了管理端点
0.0.16 (2017-09-11)
修复了多块传输挂起的问题,因为合并块失败 #187
在创建、追加调用中添加了syncflag和leaseid
在创建、追加和打开调用中添加了filesessionid
0.0.15 (2017-07-26)
启用Data Lake Store进度控制器回调 #174
修复了如果包含块为“pending”状态时文件状态被错误地标记为“错误”的问题 #182
修复了由于transfer future done_callback导致的竞争条件 #177
0.0.14 (2017-07-10)
修复了上传和下载路径中常见前缀被折叠为仅唯一路径的问题
0.0.13 (2017-06-28)
添加了对自动刷新服务主体凭据的支持
0.0.12 (2017-06-20)
修复了ls在没有内容时返回顶级文件夹的回归问题。现在,如果文件夹没有子项,它将正确地返回空数组
0.0.11 (2017-06-02)
更新为将不完整的文件下载命名为具有.inprogress后缀。当下载成功完成时,此后缀将被删除
0.0.10 (2017-05-24)
允许用户显式使用或使内部、本地缓存无效,该缓存是从先前的ls调用构建的。现在默认设置为始终调用服务而不是缓存。
在构建期间正确创建wheel包以确保所有pip包都可用
更新文件夹上传/下载,在目标文件存在且未指定覆盖时适当抛出错误。注意:目标文件夹的存在(或子文件夹的存在)不会自动导致失败。只有叶节点存在才会导致失败。
修复了尝试获取根文件夹信息时导致文件未找到错误的bug
0.0.9 (2017-05-09)
强制执行基本SSL利用以确保由于GitHub问题625(https://github.com/pyca/pyopenssl/issues/625)导致的性能
0.0.8 (2017-04-26)
修复了服务器端节流重试支持。这不是保证如果服务器正在节流上传(或下载),它最终会成功,但现在有一个回退重试来提高成功的可能性
0.0.7 (2017-04-19)
更新构建过程以更有效地处理pip的多部分命名空间
0.0.6 (2017-03-15)
修复了应大幅提高下载性能的路径缓存问题
0.0.5 (2017-03-01)
修复了确保在创建目标文件之前可以访问源路径的下载器
修复了凭据对象以继承msrest.authentication以便提供更通用的身份验证支持
支持以下功能
set_expiry: 允许设置文件的过期时间
ACL管理
set_acl: 允许替换文件或文件夹上的ACL
set_acl_entries: 允许“修补”文件或文件夹上的现有ACL
get_acl_status: 获取文件或文件夹的ACL信息
remove_acl_entries: 从文件或文件夹的ACL中删除指定的条目
remove_acl: 从文件或文件夹中删除所有非默认ACL条目
remove_default_acl: 从文件夹中删除所有默认ACL条目
移除不受支持的“TRUNCATE”操作。
添加了API版本支持,默认为最新API版本(2016-11-01)
0.0.4 (2017-02-07)
修复了文件夹上传问题,当指定覆盖时,可以正确删除包含内容的文件夹。
修复了默认将详细输出设置为False/Off的问题。这默认移除了进度跟踪输出,但大幅提高了性能。
0.0.3 (2017-02-02)
修复了setup.py,包括HISTORY.rst文件。没有其他更改
0.0.2 (2017-01-30)
解决了lib.auth()未正确默认为双因素认证的问题。
修复了ADLUploader的覆盖功能有时不被遵守的问题。
修复了空文件无法正确上传并导致进度跟踪挂起的问题。
添加了示例目录,展示了如何使用客户端以及上传和下载逻辑的示例。
对文档和注释进行了整体清理。
这仍然基于API版本2016-11-01
0.0.1 (2016-11-21)
初始预览发布。基于API版本2016-11-01。
包括初始ADLS文件系统功能以及扩展的上传和下载支持。
项目详情
下载文件
下载适用于您平台的应用程序文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。
源代码分发
构建分发
azure-datalake-store-0.0.53.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 05b6de62ee3f2a0a6e6941e6933b792b800c3e7f6ffce2fc324bc19875757393 |
|
MD5 | 5c2a6e35439ee42d46e6ea9052724c86 |
|
BLAKE2b-256 | 22ff61369d06422b5ac48067215ff404841342651b14a89b46c8d8e1507c8f17 |
azure_datalake_store-0.0.53-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a30c902a6e360aa47d7f69f086b426729784e71c536f330b691647a51dc42b2b |
|
MD5 | a2f720ae787fc2f9e6c5d28afd2f7763 |
|
BLAKE2b-256 | 882a75f56b14f115189155cf12e46b366ad1fe3357af5a1a7c09f7446662d617 |