duc*_*uck 5 java hadoop azure apache-spark
我知道之前已经问过这个问题,但我无法得到明确的工作答案.
result.saveAsTextFile(path);
Run Code Online (Sandbox Code Playgroud)
当使用spark saveAsTextFile时,输出将以"part-00","part-01"等名称保存.是否可以将此名称更改为自定义名称?
saveAsTextFile是否可以附加到现有文件而不是覆盖它?
我使用Java 7进行编码,输出文件系统将是云(Azure,Aws)
小智 0
1)saveAsTextFile方法不直接支持控制文件输出名称。您可以尝试使用 saveAsHadoopDataset 来控制输出文件基本名称。
例如:您可以获取 yourCustomName-00000,而不是part-00000。
请记住,您无法使用此方法控制后缀 00000。它是 Spark 在写入时自动为每个分区分配的内容,以便每个分区写入唯一的文件。
为了控制它,正如上面评论中提到的,您必须编写自己的自定义 OutputFormat。
SparkConf conf=new SparkConf();
conf.setMaster("local").setAppName("yello");
JavaSparkContext sc=new JavaSparkContext(conf);
JobConf jobConf=new JobConf();
jobConf.set("mapreduce.output.basename", "customName");
jobConf.set("mapred.output.dir", "outputPath");
JavaRDD<String> input = sc.textFile("inputDir");
input.saveAsHadoopDataset(jobConf);
Run Code Online (Sandbox Code Playgroud)
2) 解决方法是将输出按原样写入输出位置,并使用Hadoop FileUtil.copyMerge函数形成合并文件。
| 归档时间: |
|
| 查看次数: |
4210 次 |
| 最近记录: |