读取/写入DataBricks中的单个文件

Ger*_*ckl 2 python pyspark databricks

我有一个文件,其中包含存储在简单文本文件中的名称列表。每行包含一个名称。现在,我需要根据用户输入在语法上为该文件添加一个新名称。对于输入本身,我使用DataBricks小部件-正常工作,并且将新名称存储在字符串对象中。现在,我需要将此名称附加到文件中。

该文件已安装在/mnt/blob/myNames.txt下的DataBricks文件系统(DBFS)中

尝试像这样读取文件时:

f = open("/mnt/blob/myNames.txt", "r") 
print f
Run Code Online (Sandbox Code Playgroud)

它返回错误“没有这样的文件或目录”

所以我试图将我的新名称包装到数据帧中并将其附加到现有文件中,但是由于dataframe.write.save旨在写入文件夹,因此也无法使用

我可以使用最简单的python将这个新名称附加到文件中吗?

Unm*_*eni 12

您可以使用“a”以附加模式打开文件

with  open("/dbfs/mnt/sample.txt", "a") as f:
  f.write("append values")
Run Code Online (Sandbox Code Playgroud)

现在您可以使用读取模式“r”查看内容

with  open("/dbfs/mnt/sample.txt", "r") as f_read:
  for line in f_read:
    print(line)
Run Code Online (Sandbox Code Playgroud)

解决方案:这里


小智 6

您可以使用dbutils从DBFS写入和读取文件。在数据块中使用 dbutils.fs.help()命令访问DBFS的帮助菜单。

因此,您可以使用以下命令将名称附加到文件中:

dbutils.fs.put("/mnt/blob/myNames.txt", new_name)
Run Code Online (Sandbox Code Playgroud)

因为找不到DBFS路径,所以出现“没有这样的文件或目录”错误。使用dbfs:/访问DBFS路径。这是您应该阅读文件的方式:

f = open("/dbfs/mnt/blob/myNames.txt", "r")
Run Code Online (Sandbox Code Playgroud)