Skip to content

使用 Python 操作 Azure Data Lake Storage Gen2 层次化文件系统

本技能旨在引导开发者使用 Python SDK 管理 Azure Data Lake Storage (ADLS) Gen2,解决大数据分析中常见的层次化目录管理、大规模文件读写以及精细化权限控制问题。

为什么需要这个技能

在处理海量数据时,传统的对象存储(如标准 Blob 存储)缺乏真正的目录结构,在进行频繁的重命名或递归遍历时效率较低。Azure Data Lake Storage Gen2 提供了层次化命名空间(Hierarchical Namespace),允许像操作本地文件系统一样操作云端数据。

掌握该 SDK 可以让你在 Python 程序中高效地创建目录树、流式上传大文件、管理访问控制列表(ACL),这对于构建数据湖、ETL 流水线或机器学习训练数据集至关重要。

适用场景

  • 大数据分析工作流:需要频繁创建、删除或重命名深层嵌套目录。
  • 高性能数据上传:利用 append_dataflush_data 分块上传超大文件。
  • 精细权限管理:在目录或文件级别设置 POSIX 风格的访问控制权限(ACL)。
  • 异步 I/O 处理:在需要高吞吐量的情况下,使用 aio 异步客户端提升并发能力。

核心工作流

1. 环境配置与身份验证

安装核心库并配置账户 URL。推荐使用 DefaultAzureCredential 以支持多种认证环境(如本地 CLI、托管身份等)。

bash
pip install azure-storage-file-datalake azure-identity
python
from azure.identity import DefaultAzureCredential
from azure.storage.filedatalake import DataLakeServiceClient

credential = DefaultAzureCredential()
account_url = "https://<account>.dfs.core.windows.net"
service_client = DataLakeServiceClient(account_url=account_url, credential=credential)

2. 客户端层级操作

SDK 采用由大到小的层级结构:Service FileSystem Directory File

  • 文件系统(容器):通过 service_client.create_file_system("name") 创建。
  • 目录管理:使用 FileSystemClient.create_directory("path") 构建目录树。
  • 文件读写:利用 DataLakeFileClient 执行 upload_data(上传)或 download_file(下载)。

3. 高级操作技巧

  • 大文件写入:不要一次性上传,使用 append_data 分段追加,最后调用 flush_data 提交更改。
  • 递归遍历:在 get_paths 方法中设置 recursive=True 即可一次性获取目录下所有子文件和文件夹。
  • 权限控制:通过 set_access_control 为特定用户或组定义 rwxr-x--- 权限。

下载和安装

下载 azure-storage-file-datalake-py 中文版 Skill ZIP

解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md

你可能还需要

暂无推荐