无法在 databricks 运行时版本 7 中使用 shell 命令访问 /dbfs/FileStore
Posted
技术标签:
【中文标题】无法在 databricks 运行时版本 7 中使用 shell 命令访问 /dbfs/FileStore【英文标题】:Can't Access /dbfs/FileStore using shell commands in databricks runtime version 7 【发布时间】:2020-08-27 02:41:07 【问题描述】:在 databricks 运行时版本 6.6 中,我能够成功运行如下 shell 命令:
%sh ls /dbfs/FileStore/tables
但是,在运行时版本 7 中,这不再有效。有什么方法可以在运行时版本 7 中直接访问 /dbfs/FileStore?我需要运行命令来解压缩 /dbfs/FileStore/tables 中的 parquet zip 文件。这曾经在 6.6 版中有效,但 databricks 新的“升级”打破了这个简单的核心功能。
不确定这是否重要,但我正在使用社区版的数据块。
【问题讨论】:
它说的错误是什么? 【参考方案1】:当您运行 %sh ls /dbfs/FileStore/tables
时,您无法在 databricks 运行时版本 7 中使用 shell 命令访问 /dbfs/FileStore
,因为默认情况下,文件夹名为 '/dbfs/FileStore' does not exists in the 'dbfs'
。
尝试在“/dbfs/FileStore/Tables
”中上传一些文件。
现在,再次尝试运行相同的命令%sh ls /dbfs/FileStore/tables
,现在您会看到结果,因为我们已将数据上传到/dbfs/FileStore/tables
文件夹中。
【讨论】:
如果我的回答对你有帮助,可以accept it as an answer。这对其他社区成员可能是有益的。谢谢。 这是不正确的答案,因为它不是在不同于 Azure Databricks 的社区版上完成的【参考方案2】:/dbfs
装载不适用于 DBR >= 7.x 的社区版 - 这是一个已知限制。
您可以通过使用驱动程序节点上的文件并使用dbutils.fs.cp
命令 (docs) 上传或下载文件来解决此限制。因此您的代码将如下所示:
#write a file to local filesystem using Python I/O APIs
...
# upload file to DBFS
dbutils.fs.cp('file:/tmp/local-path', 'dbfs:/FileStore/tables/dbfs_file.txt')
从 DBFS 读取数据将如下所示:
# copy file from DBFS to local file_system
dbutils.fs.cp('dbfs:/tmp/dbfs_file.txt', 'file:/tmp/local-path')
# read the file locally
...
【讨论】:
【参考方案3】:我知道这个问题已经有一年的历史了,但我想分享其他我认为有帮助的帖子,以防有人有同样的问题。
我发现这个类似问题中的 cmets 很有帮助:How to access DBFS from shell?。上述帖子中的 cmets 还引用了 Not able to cat dbfs file in databricks community edition cluster. FileNotFoundError: [Errno 2] No such file or directory:,我发现这也很有帮助。
我在社区版中了解到ls /dbfs/FileStore/tables
是不可能的,因为 dbfs 本身没有安装在节点上并且该功能被禁用。
【讨论】:
以上是关于无法在 databricks 运行时版本 7 中使用 shell 命令访问 /dbfs/FileStore的主要内容,如果未能解决你的问题,请参考以下文章
databricks-connect 无法连接到 Databricks 集群运行时 8.4
为啥 Databricks Connect 测试无法在 Mac 上运行?
popToRootViewControllerAnimated 在 IOS 7 sim 上的 Xcode5 中使 App 崩溃