我正在尝试使用多个输出来更改化简器中的输出文件名。我正在使用oozie工作流来运行mapreduce作业。
我找不到在 oozie 工作流程中添加以下属性的方法 -
MultipleOutputs.addNamedOutput(job, "text", TextOutputFormat.class, Text.class, Text.class);
由于它是oozie mapreduce操作,我没有驱动程序类放在上面的代码上。
答案在于该方法的源代码。从hadoop core 1.2.1
罐子里
/* */ public static void addNamedOutput(Job job, String namedOutput, Class<? extends OutputFormat> outputFormatClass, Class<?> keyClass, Class<?> valueClass)
/* */ {
/* 248 */ checkNamedOutputName(job, namedOutput, true);
/* 249 */ Configuration conf = job.getConfiguration();
/* 250 */ conf.set("mapreduce.multipleoutputs", conf.get("mapreduce.multipleoutputs", "") + " " + namedOutput);
/* */
/* 252 */ conf.setClass("mapreduce.multipleoutputs.namedOutput." + namedOutput + ".format", outputFormatClass, OutputFormat.class);
/* */
/* 254 */ conf.setClass("mapreduce.multipleoutputs.namedOutput." + namedOutput + ".key", keyClass, Object.class);
/* 255 */ conf.setClass("mapreduce.multipleoutputs.namedOutput." + namedOutput + ".value", valueClass, Object.class);
/* */ }
因此,它指向使用空格分隔namedOutput
再次设置"mapreduce.multipleoutputs"
,并使用以下变量设置格式、键和值类。
"mapreduce.multipleoutputs.namedOutput." + namedOutput + ".format"
"mapreduce.multipleoutputs.namedOutput." + namedOutput + ".key"
"mapreduce.multipleoutputs.namedOutput." + namedOutput + ".value"
希望对您有所帮助。