В моей части редуктора MapReduce у меня есть код
public static class IntSumReducer extends Reducer<Text, Text, Text, Text> {
private Text textValue = new Text();
private FloatWritable floatWritable = new FloatWritable();
@Override
public void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException {
double total = 0.00;
int count = 0;
for (Text val: values) {
String line = val.toString();
String[] field = line.split(",");
count+=1;
total += Float.parseFloat(field[1]);
}
String v = String.valueOf(count) + "," + String.valueOf(total);
textValue.set(v);
context.write(key, textValue);
}
}
Однако вывод возвращает 1 для каждого ключа, но не для его вхождения. Кроме того, как я могу отформатировать сумму в число, которое имеет «,» для тысячи значений с двумя десятичными знаками?
Текущий вывод
1 1, 1201.22135
Желаемый вывод
1 3, 1,201.22
(3 - количество вхождений ключа 1, а 1,201.22 - общее значение всех ключей 1)