尝试在 DBFS 上将 Spark Dataframe 以 CSV 格式保存到磁盘
Posted
技术标签:
【中文标题】尝试在 DBFS 上将 Spark Dataframe 以 CSV 格式保存到磁盘【英文标题】:Trying to Save Spark Dataframe to disk as CSV on DBFS 【发布时间】:2019-10-24 12:55:24 【问题描述】:我发现了多个关于如何在 Databricks 平台上将 Dataframe 保存为 CSV 到磁盘的结果,例如 Spark Dataframe save as CSV How to save a spark DataFrame as csv on disk?
但是,每当我尝试将答案应用于我的情况时,它都会失败。因此,我在这里提交我自己的问题。
我使用以下代码生成以下数据框:
df = spark.read.format(file_type) \
.option("inferSchema", infer_schema) \
.option("header", first_row_is_header) \
.option("sep", delimiter) \
.load(file_location)
display(df)
我现在想将上述数据帧保存到磁盘。
我尝试了以下方法:
filepath = "/FileStore/tables"
df.coalesce(1).write.option("header","true").option("sep",",").mode("overwrite").csv("filepath")
但我收到以下错误:
谁能告诉我哪里出错了?
【问题讨论】:
我设法弄清楚为什么会出现上述错误 - 这是因为我试图写入 Databricks 的社区版。当我将代码应用到付费的 Databricks 平台时,一切正常。但是,该文件被保存为part-00000-tid-3693777652656899971-46f65adb-4641-446f-863f-eade3e2b3155-2-1-c000.csv
。有人可以告诉我如何将文件重命名为更有意义的名称吗?
【参考方案1】:
根据原帖者的评论分享答案:
“我设法弄清楚为什么会出现上述错误 - 这是因为我试图写入 Databricks 的社区版。当我将代码应用到付费的 Databricks 平台时,一切正常”。
回答评论问题:
谁能告诉我如何将文件重命名为更多内容 有意义吗?
在Spark的存档中不能直接修改文件名。
Spark 使用 Hadoop 文件格式,这需要对数据进行分区 - 这就是您拥有部分文件的原因。您可以在处理后轻松更改文件名,就像在SO 线程中一样。
您可以参考类似的SO 线程,它解决了类似的问题。
希望这会有所帮助。
【讨论】:
以上是关于尝试在 DBFS 上将 Spark Dataframe 以 CSV 格式保存到磁盘的主要内容,如果未能解决你的问题,请参考以下文章
无法在 NaiveBayes Spark 示例上将字符串转换为浮点数