发出与声明的[mapreduce]不同的值类

lvmkulzt  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(229)

我在我的项目中使用了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绘制者这样做呢?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题