1

在 databricks 运行时版本 6.6 中,我能够成功运行如下 shell 命令:

%sh ls /dbfs/FileStore/tables

但是,在运行时版本 7 中,这不再有效。有什么方法可以在运行时版本 7 中直接访问 /dbfs/FileStore?我需要运行命令来解压缩 /dbfs/FileStore/tables 中的 parquet zip 文件。这曾经在 6.6 版中工作,但 databricks 新的“升级”打破了这个简单的核心功能。

不确定这是否重要,但我正在使用数据块的社区版。

4

3 回答 3

1

/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
...
于 2021-08-27T06:37:31.333 回答
1

当您运行 %sh ls/dbfs/FileStore/tables时,您无法/dbfs/FileStore在 databricks 运行时版本 7 中使用 shell 命令访问,因为默认情况下,文件夹名为'/dbfs/FileStore' does not exists in the 'dbfs'.

在此处输入图像描述

尝试在“ /dbfs/FileStore/Tables”中上传一些文件。

在此处输入图像描述

现在,尝试再次运行相同的命令%sh ls /dbfs/FileStore/tables,现在您会看到结果,因为我们已将数据上传到/dbfs/FileStore/tables文件夹中。

在此处输入图像描述

于 2020-09-04T09:10:51.023 回答
0

我知道这个问题已经有一年了,但我想分享其他我发现有帮助的帖子,以防有人有同样的问题。

我发现这个类似问题中的评论很有帮助:如何从 shell 访问 DBFS?. 上述帖子中的评论还引用了Not able to cat dbfs file in databricks community edition cluster。FileNotFoundError:[Errno 2] 没有这样的文件或目录:我发现这也很有帮助。

我在社区版中了解到ls /dbfs/FileStore/tables是不可能的,因为 dbfs 本身没有安装在节点上并且该功能被禁用。

于 2021-08-26T13:02:28.340 回答