cin*_*n21 5 azure apache-spark databricks
我已将 *.zip 文件夹上传到我的 Azure Datacricks FileStore:
现在我想解压缩文件夹并将其存储在 FileStore 上:dbfs:/FileStore/tables/rfc_model。
我知道这应该很容易,但我在 DB Notebooks 中工作时感到困惑......
谢谢你的帮助!
更新:
我使用这个公式没有成功:
%sh
unzip /FileStore/tables/rfc_model.zip
和
%sh
unzip dbfs:/FileStore/tables/rfc_model.zip
更新:
我已将@Sim 创建的代码复制到我的 Databricks 笔记本中,但出现此错误:
知道如何解决这个问题吗?
当您使用时,%sh您正在使用其本地文件系统在驱动程序节点上执行 shell 命令。但是,/FileStore/不在本地文件系统中,这就是您遇到问题的原因。您可以通过尝试看到:
%sh ls /FileStore
# ls: cannot access '/FileStore': No such file or directory
Run Code Online (Sandbox Code Playgroud)
对比
dbutils.fs.ls("/FileStore")
// resX: Seq[com.databricks.backend.daemon.dbutils.FileInfo] = WrappedArray(...)
Run Code Online (Sandbox Code Playgroud)
您必须使用可以与 Databricks 文件系统一起使用的解压缩实用程序,或者您必须将 zip 从文件存储复制到驱动程序磁盘,解压缩然后复制回/FileStore.
您可以使用file:/...,例如,寻址本地文件系统,
dbutils.fs.cp("/FileStore/file.zip", "file:/tmp/file.zip")
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
旁注 1:Databricks 文件系统管理不是超级直观,尤其是在文件存储方面。例如,理论上,Databricks 文件系统 (DBFS) 在本地安装为/dbfs/. 但是,/dbfs/FileStore没有解决文件存储,而dbfs:/FileStore有。你不是一个人。:)
旁注 2:如果您需要对许多文件执行此操作,您可以通过Dataset[String]使用文件路径而不是ds.map { name => ... }.collect(). collect 动作将强制执行。在 map 函数的主体中,您将不得不使用 shell API 而不是%sh.
旁注 3:不久前,我使用以下 Scala 实用程序在 Databricks 上解压缩。无法验证它仍然有效,但它可以给你一些想法。
%sh ls /FileStore
# ls: cannot access '/FileStore': No such file or directory
Run Code Online (Sandbox Code Playgroud)
这有效:
%sh
unzip /dbfs/FileStore/tables/rfc_model.zip
Run Code Online (Sandbox Code Playgroud)
如果需要,需要将结果复制到 dbfs 中的目标。
%sh
cp rfc_model /dbfs/FileStore/tables
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3854 次 |
| 最近记录: |