2017-05-22 36 views
0

使用火花v2.1与蟒,我加载JSON文件与避免输出分割JSON(诉2.1)

sqlContext.read.json("path/data.json") 

我有输出JSON问题。使用下面的命令

df.write.json("path/test.json") 

数据保存在其中包括两个空文件的文件夹名为test.json(不是一个文件):一个空和其他与一个陌生的名字:

part-r-00000-f9ec958d-ceb2-4aee-bcb1-fa42a95b714f 

是有无论如何有一个干净的单个JSON输出文件?当您尝试保存

感谢

回答

1

是,火花在写入多个文件输出。由于计算是分布式的,所以输出文件被写入多个部分文件,如(part-r-00000-f9ec958d-ceb2-4aee-bcb1-fa42a95b714f)。创建的文件数量等于分区数量。

如果您的数据很小并且可以放在内存中,那么您可以将输出文件保存在单个文件中。但是,如果你的数据很大,在单个文件上保存并不是建议的方式。

其实test.json是一个目录而不是json文件。它包含多个部分文件。这对您不会产生任何问题,您可以稍后阅读。

如果你仍然希望你的输出在一个文件中,那么你需要重新分区为1,这会将所有数据都带到单个节点并保存。这可能会导致问题,如果你有大量的数据。

df.repartition(1).write.json("path/test.json") 

或者

df.collect().write.json("path/test.json")