在计算要输出的数字平均值后,我无法返回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 作为输出键还是值(。
如果您仍然遇到问题,请将一些代码发布回您的问题中