我在我的项目中使用了jimmy lin的github repo[1]。然而,我注意到arraylistofdoubleswritable正在返回doublewriteable。如果我在reduce阶段使用它,这不是问题,即:
public static class Reduce extends Reducer<Text,DoubleWritable,Text,ArrayListOfDoublesWritable>
原因是我可以将setoutputvalueclass方法的参数设置为doublewritable.class。
但当我在map阶段使用它时,情况似乎并非如此。hadoop抱怨说,它在实际接收arraylistofdoubleswritable的同时期望doublewritable。
有没有办法将map value类设置为与声明的不同?我已经介绍了setmapoutputvalueclass方法,但这似乎不是解决这个问题的方法。
--司机--
Configuration conf = new Configuration();
String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs(); // get all args
if (otherArgs.length != 2) {
System.err.println("Usage: WordCount <in> <out>");
System.exit(2);
}
Job job = new Job(conf, "job 1");
job.setJarByClass(Kira.class);
job.setMapperClass(Map.class);
job.setReducerClass(Reduce.class);
// set output key type
job.setOutputKeyClass(Text.class);
// set output value type
job.setOutputValueClass(DoubleWritable.class);
//set the HDFS path of the input data
FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
// set the HDFS path for the output
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
//Wait till job completion
System.exit(job.waitForCompletion(true) ? 0 : 1);
注意我的输出值类被设置为doublewritable.class,尽管我已经声明了arraylistofdoubleswritable。
你怎么可能为Map绘制者这样做呢?
暂无答案!
目前还没有任何答案,快来回答吧!