如何在 Databricks 中使用 Shutil 压缩文件(在 Azure Blob 存储上)

Axx*_*ion 4 zip shutil pyspark azure-blob-storage databricks

我训练有素的深度学习模型存在于文件夹中的几个文件中。所以这与压缩数据帧无关。

我想压缩此文件夹(在 Azure Blob 存储中)。但是当我使用 Shutil 时,这似乎不起作用:

import shutil
modelPath = "/dbfs/mnt/databricks/Models/predictBaseTerm/noNormalizationCode/2020-01-10-13-43/9_0.8147903598547376"
zipPath= "/mnt/databricks/Deploy/" (no /dbfs here or it will error)
shutil.make_archive(base_dir= modelPath, format='zip', base_name=zipPath)
Run Code Online (Sandbox Code Playgroud)

有人知道如何执行此操作并将文件放入 Azure Blob 存储(我从中读取文件的位置)吗?

Axx*_*ion 13

最后我自己想通了。

无法使用 Shutil 直接写入 dbfs(Azure Blob 存储)。

您需要首先将文件放在 databricks 的本地驱动程序节点上,如下所示(在无法直接写入 Blob 存储的文档中的某个位置阅读它):

import shutil
modelPath = "/dbfs/mnt/databricks/Models/predictBaseTerm/noNormalizationCode/2020-01-10-13-43/9_0.8147903598547376"
zipPath= "/tmp/model"
shutil.make_archive(base_dir= modelPath, format='zip', base_name=zipPath)
Run Code Online (Sandbox Code Playgroud)

然后您可以将文件从本地驱动程序节点复制到 blob 存储。请注意“文件:”以从本地存储中获取文件!

blobStoragePath = "dbfs:/mnt/databricks/Models"
dbutils.fs.cp("file:" +zipPath + ".zip", blobStoragePath)
Run Code Online (Sandbox Code Playgroud)