使用 Azure 存储资源管理器和 python SDK 在 Azure Datalake 存储上上传文件夹失败

Uploading folders on Azure Datalake storage failed using Azure Storage Explorer and python SDK both

我正在尝试将我的本地数据上传到 Azure Datalake 存储上,数据总共约 10 GB,分为多个文件夹。我尝试了多种方式上传文件,每个文件的大小从几KB到56MB不等,而且都是二进制数据文件。

首先,我尝试使用 python SDK for azure datalake 使用以下函数上传它们:

def upload_file_to_directory_bulk(filesystem_name,directory_name,fname_local,fname_uploaded): 尝试:

    file_system_client = service_client.get_file_system_client(file_system=filesystem_name)

    directory_client = file_system_client.get_directory_client(directory_name)
    
    file_client = directory_client.get_file_client(fname_uploaded)

    local_file = open(fname_local,'r',encoding='latin-1')
    
    file_contents = local_file.read()
   
    file_client.upload_data(file_contents, length=len(file_contents),overwrite=True,validate_content=True)

except Exception as e:
  print(e)

这个功能的问题是要么跳过本地文件夹中的文件上传,要么上传的一些文件与本地相同的本地文件大小不一样。

我尝试的第二种方法是使用 Azure 存储资源管理器上传整个文件夹,存储资源管理器会在上传大约 90 到 100 个文件后 crash/fail。有什么方法可以查看日志并了解它停止的原因吗?

第三,我只是使用 Azure 门户手动上传,但那完全是一团糟,因为它在某些文件上也失败了。

谁能指导我如何在 Azure 数据湖上上传批量数据?这3种方法可能会出现什么问题。

使用 Azure 门户上传文件是最简单可靠的选择。假设你有可靠的互联网,我不确定你到底做错了什么。

我已经上传了大约 2.67 GB 的数据,其中包含 691 个文件,而且很容易上传,没有任何问题。许多文件的大小超过 75 MB。检查下面的共享图片。

如果您可以将数据分成 4 组,然后上传每组,您就可以轻松上传文件而不会出现任何问题。

另一种方法

您可以使用AzCopy上传数据。

AzCopy is a command-line utility that you can use to copy blobs or files to or from a storage account.

它可以通过一些简单的 command-line 命令轻松上传大文件。

参考:Get started with AzCopy, Upload files to Azure Blob storage by using AzCopy