Kar*_*ter 33 csv hadoop file distributed-computing apache-spark
我正在尝试找到一种将我的Spark Job的结果保存为csv文件的有效方法.我正在使用Spark和Hadoop,到目前为止我的所有文件都保存为part-00000.
任何想法如何使我的火花保存到具有指定文件名的文件?
Tat*_*Das 53
由于Spark使用Hadoop文件系统API将数据写入文件,因此这是不可避免的.如果你这样做
rdd.saveAsTextFile("foo")
Run Code Online (Sandbox Code Playgroud)
它将保存为" foo/part-XXXXX",并且您要保存的RDD中的每个分区都有一个part-*文件.RDD中每个分区写入单独文件的原因是容错.如果编写第3个分区(即to part-00002)的任务失败,Spark只会重新运行该任务并覆盖部分写入/损坏part-00002,而不会影响其他部分.如果他们都写入同一个文件,那么恢复单个任务的失败要困难得多.
part-XXXXX如果您要在基于Spark/Hadoop的框架中再次使用它们,这些文件通常不会成为问题因为它们都使用HDFS API,如果您要求它们读取"foo",它们都将读取part-XXXXXfoo中的所有文件好.
小智 10
我建议以这种方式(Java示例):
theRddToPrint.coalesce(1, true).saveAsTextFile(textFileName);
FileSystem fs = anyUtilClass.getHadoopFileSystem(rootFolder);
FileUtil.copyMerge(
fs, new Path(textFileName),
fs, new Path(textFileNameDestiny),
true, fs.getConf(), null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42763 次 |
| 最近记录: |