我正在尝试找到一种有效的方法来将我的 Spark 作业的结果保存为 csv 文件。我将 Spark 与 Hadoop 一起使用,到目前为止,我的所有文件都保存为 part-00000
。
关于如何将我的 spark 保存到具有指定文件名的文件的任何想法?
最佳答案
由于 Spark 使用 Hadoop 文件系统 API 将数据写入文件,因此这是不可避免的。如果你这样做了
rdd.saveAsTextFile("foo")
它将被保存为“foo/part-XXXXX
”,其中一个部分-* 文件在您尝试保存的 RDD 中的每个分区。 RDD 中的每个分区都写入一个单独的文件的原因是为了容错。如果写入第三个分区(即 part-00002
)的任务失败,Spark 只需重新运行任务并覆盖部分写入/损坏的 part-00002
,没有任何效果在其他部分。如果他们都写入同一个文件,那么恢复单个任务的失败就困难得多。
如果您要在基于 Spark/Hadoop 的框架中再次使用 part-XXXXX
文件通常不是问题,因为它们都使用 HDFS API,如果您要求它们阅读“foo”,它们也会读取 foo 中的所有 part-XXXXX
文件。
关于file - 如何在 Spark 中写入 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23527941/