使用 Python 在 Azure Data Lake Storage Gen1 上执行文件系统操作

本文介绍了如何使用 Python SDK 在 Azure Data Lake Storage Gen1 上执行文件系统操作。 若要了解如何使用 Python 对 Data Lake Storage Gen1 执行帐户管理操作,请参阅使用 Python 在 Data Lake Storage Gen1 上执行帐户管理操作

先决条件

安装模块

若要通过 Python 使用 Data Lake Storage Gen1,需要安装三个模块。

  • azure-mgmt-resource 模块,包括用于 Active Directory 的 Azure 模块,等等。
  • azure-mgmt-datalake-store 模块,包括 Azure Data Lake Storage Gen1 帐户管理操作。 有关此模块的详细信息,请参阅 azure-mgmt-datalake-store 模块参考
  • azure-datalake-store 模块,包括 Azure Data Lake Storage Gen1 文件系统操作。 有关此模块的详细信息,请参阅 azure-datalake-store file-system 模块参考

使用以下命令安装这些模块。

pip install azure-mgmt-resource
pip install azure-mgmt-datalake-store
pip install azure-datalake-store

创建新的 Python 应用程序

  1. 在所选的 IDE 中创建新的 Python 应用程序,例如,mysample.py

  2. 添加以下代码行导入所需的模块

    ## Use this only for Azure AD service-to-service authentication
    from azure.common.credentials import ServicePrincipalCredentials
    
    ## Use this only for Azure AD end-user authentication
    from azure.common.credentials import UserPassCredentials
    
    ## Use this only for Azure AD multi-factor authentication
    from msrestazure.azure_active_directory import AADTokenCredentials
    
    ## Required for Azure Data Lake Storage Gen1 account management
    from azure.mgmt.datalake.store import DataLakeStoreAccountManagementClient
    from azure.mgmt.datalake.store.models import DataLakeStoreAccount
    
    ## Required for Azure Data Lake Storage Gen1 filesystem management
    from azure.datalake.store import core, lib, multithread
    
    ## Common Azure imports
    from azure.mgmt.resource.resources import ResourceManagementClient
    from azure.mgmt.resource.resources.models import ResourceGroup
    
    ## Use these as needed for your application
    import logging, getpass, pprint, uuid, time
    
  3. 将更改保存到 mysample.py。

身份验证

在本部分中,我们将讨论使用 Microsoft Entra ID 进行身份验证的不同方法。 可用选项包括:

创建文件系统客户端

以下代码段首先创建 Data Lake Storage Gen1 帐户客户端。 它使用客户端对象来创建一个 Data Lake Storage Gen1 帐户。 最后,此代码段创建一个文件系统客户端对象。

## Declare variables
subscriptionId = 'FILL-IN-HERE'
adlsAccountName = 'FILL-IN-HERE'

## Create a filesystem client object
adlsFileSystemClient = core.AzureDLFileSystem(adlCreds, store_name=adlsAccountName)

创建目录

## Create a directory
adlsFileSystemClient.mkdir('/mysampledirectory')

上传文件

## Upload a file
multithread.ADLUploader(adlsFileSystemClient, lpath='C:\\data\\mysamplefile.txt', rpath='/mysampledirectory/mysamplefile.txt', nthreads=64, overwrite=True, buffersize=4194304, blocksize=4194304)

下载文件

## Download a file
multithread.ADLDownloader(adlsFileSystemClient, lpath='C:\\data\\mysamplefile.txt.out', rpath='/mysampledirectory/mysamplefile.txt', nthreads=64, overwrite=True, buffersize=4194304, blocksize=4194304)

删除目录

## Delete a directory
adlsFileSystemClient.rm('/mysampledirectory', recursive=True)

后续步骤

另请参阅