Databricks dbutils.fs.ls 显示文件。但是,读取它们会引发 IO 错误

Databricks dbutils.fs.ls shows files. However, reading them throws an IO error

我是 运行 一个 Spark 集群,当我在 Databricks Notebook 上执行以下命令时,它给了我输出:

dbutils.fs.ls("/mnt/test_file.json")

[FileInfo(path=u'dbfs:/mnt/test_file.json', name=u'test_file.json', size=1083L)]

但是,当我尝试读取该文件时,出现以下错误:

with open("mnt/test_file.json", 'r') as f:
  for line in f:
    print line

IOError: [Errno 2] No such file or directory: 'mnt/test_file.json'

这可能是什么问题?非常感谢任何help/support。

为了使用本地文件 API 访问 DBFS 安装上的文件,您需要在路径前添加 /dbfs,因此在您的情况下应该是

with open('/dbfs/mnt/test_file.json', 'r') as f:
  for line in f:
    print(line)

https://docs.databricks.com/data/databricks-file-system.html#local-file-apis 的文档中查看更多详细信息,尤其是有关限制的信息。使用 Databricks Runtime 5.5 及以下版本 有 2GB 的文件限制。在 6.0+ 中不再有这样的限制,因为 FUSE 挂载已经过优化以处理更大的文件大小。