0

output.collect..に数値の平均を計算した後、flaot値を返すことができません。誰か助けてくれませんか?

public static class MapClass extends MapReduceBaseimplements 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);

}

}

public static class Reduce extends MapReduceBaseimplements 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していますか(フロートを格納する場所はどこですか?

Genericsシグネチャをマッパーに修正/削減する必要があります(平均を計算する場所に応じて、また、出力クラスタイプとしてFloatWritableを使用するようにジョブ構成を修正します(これも、使用しているかどうかによって異なります)出力キーまたは値としてfloat)。

それでも問題が解決しない場合は、質問にコードを投稿してください

于 2012-05-21T10:22:35.377 に答える