如何为hadoop输出文件提供自定义名称

RFT*_*RFT 11 hadoop

我希望输出文件的格式为2012117-part-r-00000.基本上我希望输出文件附加日期,以便我可以根据日期排列文件.我查看了OutputFormat和FileOutputFormat,但它对我的情况没有帮助.

Pra*_*ati 5

MR作业的输出文件名没有太大的灵活性.使用MultipleOutputFormat的子类.

所述MultipleOutputFormat#generateFileNameForKeyValue方法必须被实施,忽略输入到该方法中,并在返回字符串date + -part-r- + mapred.task.partition图案.mapred.task.partition是一个int,所以它必须预先用0填充.


RFT*_*RFT 5

我刚刚发现了新的API,我可以使用org.apache.hadoop.mapreduce.lib.output.MultipleOutputs和方法addNamedOutput()


San*_*ngh 5

有两种方法可以更改输出文件名。

\n\n

1.通过使用 Java 类 MultipleOutputFormat。

\n\n
// job.setOutputFormatClass(TextOutputFormat.class);\nLazyOutputFormat.setOutputFormatClass(job, TextOutputFormat.class);\nMultipleOutputs.addNamedOutput(job,\xe2\x80\x9c20180318\xe2\x80\x9d, TextOutputFormat.class, Text.class, IntWritable.class);\n
Run Code Online (Sandbox Code Playgroud)\n\n

2.通过使用

\n\n
job.getConfiguration().set(\xe2\x80\x9cmapreduce.output.basename\xe2\x80\x9d, \xe2\x80\x9c20180318\xe2\x80\x9d);\n
Run Code Online (Sandbox Code Playgroud)\n\n

参考链接:http://data-flair.training/forums/topic/in-mapreduce-how-to-change-the-name-of-output-file-from-part-r-00000

\n