org.apache.hadoop.mapred.lib.multipleoutputs.addnamedoutput()

f5emj3cl  于 2021-05-31  发布在  Hadoop
关注(0)|答案(1)|浏览(362)

我正在尝试使用multipleoutputs来更改reducer中的输出文件名。我正在使用oozie工作流运行mapreduce作业。
我无法找到在oozie工作流中添加以下属性的方法-

MultipleOutputs.addNamedOutput(job, "text", TextOutputFormat.class, Text.class, Text.class);

由于它是oozie mapreduce操作,我没有驱动程序类来放置上面的代码。

carvr3hs

carvr3hs1#

答案在于该方法的源代码。从 hadoop core 1.2.1 jar

/*     */   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);
/*     */   }

所以,它指向背景 "mapreduce.multipleoutputs" 再次与空间分离 namedOutput 以及使用以下变量设置格式、键和值类。

"mapreduce.multipleoutputs.namedOutput." + namedOutput + ".format"
"mapreduce.multipleoutputs.namedOutput." + namedOutput + ".key"
"mapreduce.multipleoutputs.namedOutput." + namedOutput + ".value"

希望有帮助。

相关问题