Azure/Python - 从存储中快速下载文件
Azure/Python - download files quickly from storage
我的 Azure webapp 需要从 blob 存储目录下载 1000 多个非常小的文件并处理它们。
如果我列出它们,然后一个一个地下载它们,这需要很长时间...有没有快速的方法来做到这一点?想一起下载吗?
PS:我使用下面的代码:
from azure.storage.blob import ContainerClient, BlobClient
blob_list = #... list all files in a blob storage directory
for blob in blob_list:
blob_client = BlobClient.from_connection_string(connection_string, container_name, blob)
downloader = blob_client.download_blob(0)
blob = pickle.loads(downloader.readall())
我使用 Azure databricks 解决了类似的问题。您可以轻松地将 Azure 存储帐户安装在数据块(即 ADLS Gen2)中,然后处理本地文件等存储文件。您可以复制文件或直接执行 process/transform,甚至无需下载它们。
您可以在 LINK
中找到数据块安装步骤
在数据块中,您还可以使用 dbutils 函数来 OS 在安装 ADLS 后访问您的文件。
我希望这种方法能有所帮助。
我还要指出,由于您使用的是 azure-batch
,因此您可以在 linux VM 中使用 blob 安装配置。因此,我们的想法是将驱动器安装到您的 VM,从而消除所有下载时间,并且您的驱动器已连接到虚拟机。
文档:https://docs.microsoft.com/en-us/azure/batch/virtual-file-mount
-
-
关键点(仅供参考):在后台 blobfilesystem
使用 blobfuse
驱动程序进行挂载。 https://docs.microsoft.com/en-us/azure/batch/virtual-file-mount#azure-blob-file-system
谢谢,希望对您有所帮助。
我的 Azure webapp 需要从 blob 存储目录下载 1000 多个非常小的文件并处理它们。
如果我列出它们,然后一个一个地下载它们,这需要很长时间...有没有快速的方法来做到这一点?想一起下载吗?
PS:我使用下面的代码:
from azure.storage.blob import ContainerClient, BlobClient
blob_list = #... list all files in a blob storage directory
for blob in blob_list:
blob_client = BlobClient.from_connection_string(connection_string, container_name, blob)
downloader = blob_client.download_blob(0)
blob = pickle.loads(downloader.readall())
我使用 Azure databricks 解决了类似的问题。您可以轻松地将 Azure 存储帐户安装在数据块(即 ADLS Gen2)中,然后处理本地文件等存储文件。您可以复制文件或直接执行 process/transform,甚至无需下载它们。
您可以在 LINK
中找到数据块安装步骤
在数据块中,您还可以使用 dbutils 函数来 OS 在安装 ADLS 后访问您的文件。
我希望这种方法能有所帮助。
我还要指出,由于您使用的是 azure-batch
,因此您可以在 linux VM 中使用 blob 安装配置。因此,我们的想法是将驱动器安装到您的 VM,从而消除所有下载时间,并且您的驱动器已连接到虚拟机。
文档:https://docs.microsoft.com/en-us/azure/batch/virtual-file-mount
关键点(仅供参考):在后台
blobfilesystem
使用blobfuse
驱动程序进行挂载。 https://docs.microsoft.com/en-us/azure/batch/virtual-file-mount#azure-blob-file-system
谢谢,希望对您有所帮助。