'saveAsTextFile'方法的奇怪行为

Hli*_*lib 2 apache-spark

我有这样的代码:

val relationships: RDD[String] = ....
relationships.saveAsTextFile("/tmp/result")
Run Code Online (Sandbox Code Playgroud)

我期望'saveAsTextFile'方法将'关系'保存到文件'/ tmp/result'.但是它创建了文件夹'/ tmp/result /'并且放了很多名为part-00000,part-00001等的文本文件.这种方法的正常行为是什么?

gas*_*rms 5

原因是它将其保存为多个文件,因为计算是分布式的.

如果您需要使用saveAsTextFile保存文件,则可以使用 coalesce(1,true).saveAsTextFile();.

这基本上意味着进行计算,然后将其合并为1个分区.您也可以使用repartition(1),这只是coalesce()将suffle参数设置为true 的包装器.

作为替代方案,如果您的数据适合一个分区,您可以收集您的rdd然后保存该数组.