Подсчитайте вхождения ключа и числового формата - PullRequest
1 голос
/ 12 марта 2020

В моей части редуктора 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)

...