Azure/Python -从存储中快速下载文件



我的Azure web应用程序需要从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-batch,那么您可以在linux虚拟机中使用blob挂载配置。因此,我们的想法是将驱动器挂载到VM上,从而节省所有下载时间,并且您的驱动器附加到VM上。

  • 文档:https://learn.microsoft.com/en-us/azure/batch/virtual-file-mount

  • Py SDK参考:https://learn.microsoft.com/en-us/python/api/azure-batch/azure.batch.models.mountconfiguration?view=azure-python

  • Blobfilesystem配置:https://learn.microsoft.com/en-us/python/api/azure-batch/azure.batch.models.azureblobfilesystemconfiguration?view=azure-python

  • 关键事情(仅供了解):在引擎盖下blobfilesystem使用blobfuse驱动程序挂载。https://learn.microsoft.com/en-us/azure/batch/virtual-file-mount azure-blob-file-system

谢谢,希望这对你有帮助。

我使用Azure数据库解决类似的问题。您可以轻松地将Azure存储帐户挂载到数据块中(即ADLS Gen2),然后像处理本地文件一样处理存储文件。您既可以复制文件,也可以直接进行处理/转换,甚至无需下载它们。
您可以在这个链接中找到装载数据块的步骤
在数据块中,您还可以使用butils函数在装载ADLS之后像操作系统一样访问您的文件。
我希望这个方法能帮到你。

最新更新