Azure Data Lake Gen 2 和 Python 在 Data Lake 文件夹中复制文件

问题描述 投票:0回答:1

使用此处证明的示例:https://learn.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-directory-file-acl-python?tabs=account-key。我已经能够连接到我的 Azure Data Lake 实例并仔细研究目录/文件结构。进行一些简单的操作。一切都好。
下一步:我已将一个大文件加载到数据湖中。 问题:我需要数据湖中的文件的两份副本,一份是收到的副本,第二份可能会被修改。希望避免加载文件两次。 希望我可以加载一次文件,然后复制到第二个位置。
在上面的示例中,我看到了如何上传文件、移动文件以及如何删除文件,但没有复制文件。

请求您的帮助。

KD

python azure-data-lake
1个回答
0
投票

您可以使用下面的代码使用 python 将文件从一个目录复制到 ADLS Gen2 中的另一个目录:

from azure.storage.blob import BlobServiceClient

def copy_files_to_adls(account_url, sas_token, source_container, source_directory, destination_container, destination_directory):
    blob_service_client = BlobServiceClient(account_url=account_url, credential=sas_token) 
    source_container_client = blob_service_client.get_container_client(source_container)
    blobs = source_container_client.list_blobs(name_starts_with=source_directory) 
    for blob in blobs:
        source_blob_path = "<sourcePath>"
        destination_blob_path = "<destinationDirectory>/<fileName>"
        blob_service_client.get_blob_client(destination_container, destination_blob_path).start_copy_from_url(source_blob_path)    
    print("Files copied successfully!")


account_url = 'https://adlsc.blob.core.windows.net'
account_name = '<accountname>'
account_key = "<accountKey>"
source_container = '<sourceContainer>'
source_directory = '<sourceDirectory>'
destination_container = '<destinationContainer>'
destination_directory = '<destinationDirectory>'

copy_files_to_adls(account_url, account_key, source_container, source_directory, destination_container, destination_directory)

enter image description here

同名文件复制成功。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.