0

我正在尝试将我的本地数据上传到 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 个文件后会崩溃/失败。有什么方法可以查看日志并查看它停止的原因吗?

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

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

4

1 回答 1

0

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

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

在此处输入图像描述

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

另一种方法

您可以使用AzCopy上传数据。

AzCopy是一个命令行实用程序,可用于将 blob 或文件复制到存储帐户或从存储帐户复制。

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

请参阅:AzCopy 入门使用 AzCopy 将文件上传到 Azure Blob 存储

于 2022-02-23T11:42:24.097 回答