跳转到主要内容

Azure Data Lake Store 文件系统客户端库(Python版)

项目描述

微软Azure Data Lake Store文件系统库(Python版)

https://travis-ci.org/Azure/azure-data-lake-store-python.svg?branch=dev https://coveralls.io/repos/github/Azure/azure-data-lake-store-python/badge.svg?branch=master

本项目是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_idazure_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)

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 (71.4 kB 查看哈希值)

上传时间 源代码

构建分发

azure_datalake_store-0.0.53-py2.py3-none-any.whl (55.3 kB 查看哈希值)

上传时间: Python 2 Python 3

由以下支持