0

在计算输出的平均值后,我无法返回浮点值。收集..有人可以帮我吗?

公共静态类 MapClass 扩展 MapReduceBase 实现 Mapper {

private Text word = new Text();

public void map(LongWritable key, Text value, 
                OutputCollector<Text, IntWritable> output, 
                Reporter reporter) throws IOException {
  String line = value.toString();
  String num = Integer.parseInt(num);

   IntWritable one = new IntWritable(num);

    word.set(“key”);
    output.collect(word, one);

}

}

公共静态类 Reduce 扩展 MapReduceBase 实现 Reducer {

public void reduce(Text key, Iterator<IntWritable> values,
                   OutputCollector<Text, IntWritable> output, 
                   Reporter reporter) throws IOException {
  int sum = 0;
  int count=0;
  int avg=0;
  while (values.hasNext()) {
    sum += values.next().get();
   count++;
  }
  avg=sum/count;
  output.collect(key, new IntWritable(avg));
}

}

4

1 回答 1

2

您是否使用org.apache.hadoop.io.FloatWritable作为输出键或值类型(无论您想在哪里存储浮点数?

您还需要修改映射器/减少的泛型签名(取决于您计算平均值的位置,并修改您的作业配置以使用 FloatWritable 作为输出类类型(再次取决于您是否使用float 作为输出键或值)。

如果您仍然遇到问题,请在您的问题中发布一些代码

于 2012-05-21T10:22:35.377 回答