我正在尝试使用multipleoutputs来更改reducer中的输出文件名。我正在使用oozie工作流运行mapreduce作业。我无法找到在oozie工作流中添加以下属性的方法-
MultipleOutputs.addNamedOutput(job, "text", TextOutputFormat.class, Text.class, Text.class);
由于它是oozie mapreduce操作,我没有驱动程序类来放置上面的代码。
carvr3hs1#
答案在于该方法的源代码。从 hadoop core 1.2.1 jar
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); /* */ }
所以,它指向背景 "mapreduce.multipleoutputs" 再次与空间分离 namedOutput 以及使用以下变量设置格式、键和值类。
"mapreduce.multipleoutputs"
namedOutput
"mapreduce.multipleoutputs.namedOutput." + namedOutput + ".format" "mapreduce.multipleoutputs.namedOutput." + namedOutput + ".key" "mapreduce.multipleoutputs.namedOutput." + namedOutput + ".value"
希望有帮助。
1条答案
按热度按时间carvr3hs1#
答案在于该方法的源代码。从
hadoop core 1.2.1
jar所以,它指向背景
"mapreduce.multipleoutputs"
再次与空间分离namedOutput
以及使用以下变量设置格式、键和值类。希望有帮助。