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

时间:2018-10-10 00:44:19

标签: pyspark databricks

我正在运行一个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'

这里可能是什么问题?任何帮助/支持都将不胜感激。

1 个答案:

答案 0 :(得分:2)

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

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

请注意,将本地文件API直接读取到DBFS时有一个2GB file limit。对于较大的文件,您将要使用dbutils.fs.cp来制作文件的本地副本。

https://docs.databricks.com/user-guide/dbfs-databricks-file-system.html#access-dbfs-using-local-file-apis

的文档中查看更多详细信息