データセットがあり、各レコードの最小値、最大値、平均値を計算したい(例:userID_1 - minimum_1-- maximum_1 - avg)。Hadoopレデューサーが単一のキーに複数の値を出力する方法
この私のコードは、私はそれは私がその単一のキーのためのそれらの値を書いてみましょうことができます何をすべきかを知っておく必要があります。MapReduceので
public static class Reduce extends Reducer<Text, IntWritable, Text, IntWritable> {
public void reduce(Text key, Iterable<IntWritable> values, Context context)
throws IOException, InterruptedException {
int sum = 0;
int visitsCounter = 0;
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
float avg;
for (IntWritable val : values) {
int currentValue = val.get();
sum += currentValue;
visitsCounter++;
min = Math.min(min, currentValue);
max = Math.max(max, currentValue);
}
avg = sum/visitsCounter;
//here can be the supposed edit to let me output (user - min - max - avg)
context.write(key, new IntWritable(sum));
}
}
これは私のために働いた、ありがとう –