【问题标题】:How to write pandas dataframe into Databricks dbfs/FileStore?如何将熊猫数据框写入 Databricks dbfs/FileStore?
【发布时间】:2020-04-12 11:11:24
【问题描述】:

我是 Databricks 的新手,需要帮助将 pandas 数据帧写入 databricks 本地文件系统。

我确实在 google 中搜索过,但找不到与此类似的任何案例,还尝试了 databricks 提供的帮助指南(附件),但也没有用。尝试进行以下更改以找到我的运气,命令运行正常,但文件未写入目录(预期的 wrtdftodbfs.txt 文件已创建)

  1. df.to_csv("/dbfs/FileStore/NJ/wrtdftodbfs.txt")

结果:抛出以下错误

FileNotFoundError: [Errno 2] 没有这样的文件或目录: '/dbfs/FileStore/NJ/wrtdftodbfs.txt'

  1. df.to_csv("\\dbfs\\FileStore\\NJ\\wrtdftodbfs.txt")

结果:没有错误,但也没有写入任何内容

  1. df.to_csv("dbfs\\FileStore\\NJ\\wrtdftodbfs.txt")

结果:没有错误,但也没有写入任何内容

  1. df.to_csv(path ="\\dbfs\\FileStore\\NJ\\",file="wrtdftodbfs.txt")

结果:TypeError: to_csv() 得到了一个意外的关键字参数“路径”

  1. df.to_csv("dbfs:\\FileStore\\NJ\\wrtdftodbfs.txt")

结果:没有错误,但也没有写入任何内容

  1. df.to_csv("dbfs:\\dbfs\\FileStore\\NJ\\wrtdftodbfs.txt")

结果:没有错误,但也没有写入任何内容

目录存在并且手动创建的文件会显示出来,但 pandas to_csv 不会写入也不会出错。

dbutils.fs.put("/dbfs/FileStore/NJ/tst.txt","Testing file creation and existence")

dbutils.fs.ls("dbfs/FileStore/NJ")

输出[186]: [FileInfo(path='dbfs:/dbfs/FileStore/NJ/tst.txt', name='tst.txt', size=35)]

感谢您的时间,如果随附的细节不够清楚,请原谅我。

【问题讨论】:

  • 尝试将其转换为 spark 数据框,然后将其另存为 csv pandas 很可能无法访问文件存储
  • 它是 Spark 数据框还是 Pandas?顶部的代码讨论了 Spark,但其他一切看起来都像 Pandas。如果涉及 Pandas,则需要使用 df.to_csv 制作文件,然后使用 dbutils.fs.put() 将制作的文件放入 here 后面的 FileStore。如果涉及 Spark,请参阅here
  • 你试过了吗:with open("/dbfs/FileStore/NJ/wrtdftodbfs.txt", "w") as f: df.to_csv(f)
  • 感谢门德的回复。我确实尝试过,但没有运气,它运行良好,但文件没有进入目录。
  • 非常感谢韦恩。共享的第二个链接有效。我已将熊猫数据框转换为火花。不确定 Databricks 文件存储是否只能通过 spark 命令将数据写入其文件系统。

标签: python pandas dataframe amazon-s3 databricks


【解决方案1】:

这对我有用:

outname = 'pre-processed.csv'
outdir = '/dbfs/FileStore/'
dfPandas.to_csv(outdir+outname, index=False, encoding="utf-8")

要下载文件,请将files/filename 添加到您的笔记本网址(在问号? 之前):

https://community.cloud.databricks.com/files/pre-processed.csv?o=189989883924552#

(你需要编辑你的主页,对我来说是:

https://community.cloud.databricks.com/?o=189989883924552#)

dbfs file explorer

【讨论】:

  • 如何获取下载地址?你能告诉任何通用方法来下载任何文件吗
  • 您好 Nani,如果您将路径+文件名放在您的主页 URL 的中间(在 .com/ 之后),就足够了,您的下载应该会自动开始。就我而言,我必须在主 URL 中间插入“files/pre-processed.csv”。
  • @MathGeek 在 databricks (Python) 中,我使用 HTML href 从 IPython.display 访问文件 import HTML HTML('community.cloud.databricks.com/files/…" >Get CSV ')
【解决方案2】:

在你的笔记本数据块中试试这个:

import pandas as pd
from io import StringIO

data = """
CODE,L,PS
5d8A,N,P60490
5d8b,H,P80377
5d8C,O,P60491
"""

df = pd.read_csv(StringIO(data), sep=',')
#print(df)
df.to_csv('/dbfs/FileStore/NJ/file1.txt')

pandas_df = pd.read_csv("/dbfs/FileStore/NJ/file1.txt", header='infer') 
print(pandas_df)

【讨论】:

  • 谢谢乔瓦尼。它有效,似乎文件正在被写入,但在通过 gui 导航或通过命令 fs ls 验证时并没有实际显示。
  • %sh find / -type f -name "file2.txt" 递归@ShaanProms
  • 太棒了!我看到了。 :) 谢谢! dbfs 命令 %fs ls /dbfs/FileStore/NJ OR dbutils.fs.ls('/dbfs/FileStore/NJ') 由于某种原因没有显示此文件。
猜你喜欢
  • 2021-02-14
  • 1970-01-01
  • 2014-03-28
  • 2016-12-25
  • 1970-01-01
  • 1970-01-01
  • 2022-08-05
  • 2018-11-11
  • 2020-02-13
相关资源
最近更新 更多