如何在输出收集器中返回浮点值



在计算要输出的数字平均值后,我无法返回flaot值.collect.。谁能帮我??

公共静态类 MapClass 扩展 MapReduceBase 实现映射器 {

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 实现减速器 {

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

}

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

  • FloatWwriteable Javadocs - A WwritetableComparable for floats.

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

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

相关内容

  • 没有找到相关文章

最新更新