如何将Dataset [row]保存为Spark中的文本文件?

时间:2019-12-06 12:11:52

标签: scala apache-spark

我想将Dataset [Row]保存为文本文件,并在特定位置使用特定名称。 有人可以帮我吗?

我已经尝试过了,但这会给我产生一个文件夹(LOCAL_FOLDER_TEMP / filename),其中包含镶木地板文件: Dataset.write.save(LOCAL_FOLDER_TEMP +文件名)

谢谢

3 个答案:

答案 0 :(得分:1)

Spark始终创建多个文件-每个分区一个文件。如果您只需要一个文件-您需要执行collect(),然后按照常规方式将其写入文件。

答案 1 :(得分:1)

您无法使用spark api将数据集保存到特定的文件名,有多种解决方法。

  1. 按照Vladislav的建议,收集数据集,然后使用scala / java / python api将其写入文件系统。
  2. 应用repartition / coalesce(1),编写数据集,然后更改文件名。
都不推荐使用

两者,因为在大型数据集中,这可能会导致OOM或只是失去spark并行性的功能。

获取镶木地板文件的第二个问题,因为默认格式为spark,所以应使用:

  df.write.format("text").save("/path/to/save")

答案 2 :(得分:1)

请使用

RDD.saveAsTextFile()

它将数据集的元素作为文本文件(或文本文件集)写入本地文件系统,HDFS或任何其他Hadoop支持的文件系统中的给定目录中。 Spark将在每个元素上调用toString,以将其转换为文件中的一行文本。

引荐链接:rdd-programming-guide