如何从Spark RDD映射写入单个文件并减少操作

时间:2019-10-25 07:37:20

标签: apache-spark dictionary rdd reduce

我正在尝试在应用地图后写入文本文件,以减少操作。下面的代码创建了8个文件,但我只需要一个文件

df3.rdd.map(_.toSeq.map(_+"").reduce(_+" "+_)).saveAsTextFile("/home/ram/Desktop/test4")

请建议如何将内容写入单个文件

2 个答案:

答案 0 :(得分:1)

最好的选择是“ coalesce”。 合并方法减少了DataFrame中的分区数。

这是您问题的代码。

df3.coalesce(1).rdd.map(_.toSeq.map(_+"").reduce(_+" "+_)).saveAsTextFile("/home/ram/Desktop/test4")

因为它将通过避免数据移动来提供良好的性能。 请检查以下链接。

Spark - repartition() vs coalesce()

答案 1 :(得分:0)

它正在创建多个文件,因为每个分区都是单独保存的。如果您需要一个文件夹中的单个输出文件,则可以重新分区或合并以写入单个文件。

df3.repartition(1).rdd.map(_.toSeq.map(_+"").reduce(_+" "+_)).saveAsTextFile("/home/ram/Desktop/test4")