我是hadoop的新手,因此需要你在一段代码上的帮助。我的Map输出是:性别年龄
男38
女23
女26。。。像这样排100行
目的:计算男性的平均年龄和女性的平均年龄。这个想法似乎很简单,但我得到了错误的输出。请看一下我的减速机代码。
public static class AgeRed extends Reducer<Text, IntWritable, Text, IntWritable> {
public void Red(Text key, Iterable<IntWritable> values, Context context) throws IOException , InterruptedException {
int sum=0, count=0;
for(IntWritable i : values){
count++;
sum+=i.get();
}
int a =sum/count;
IntWritable avg = new IntWritable(a);
context.write(key, avg);
}
}
}
减速器输出:
女23
女26
.
.
男38。。。所有这样的行,但它不是像合并
女23,26,28。。
男性38,34,42。。。
它不是组合键,只是对其进行排序,并且我的减速机作业未设置为零请帮助:(
1条答案
按热度按时间ndasle7k1#
您需要更改:
Red(Text key, Iterable<IntWritable> values, Context context)
到reduce(Text key, Iterable<IntWritable> values, Context context)
由于您没有实际重写reduce方法的名称,因此它将在Reducer
有效的类只是写出每个键/值,这些键/值就是您所看到的。