Hadoop 计算键和数字格式的出现次数

Hadoop 计算键和数字格式的出现次数,hadoop,mapreduce,Hadoop,Mapreduce,在MapReduce的reducer部分中,我有代码 public static class IntSumReducer extends Reducer<Text, Text, Text, Text> { private Text textValue = new Text(); private FloatWritable floatWritable = new FloatWritable(); @Override public void redu

在MapReduce的reducer部分中,我有代码

 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     3, 1,201.22

(3是键1和1201的出现次数。22是所有键1的总值)

这是什么输出?至于数字格式,您可以使用,例如
String v=String.format(“%d,%,.2f”,count,total)在您的情况下。输出是以下数据示例3列:第1列是PickupID,第2列是DropOffID,第3列是票价金额。在映射器部分,我映射了。在Reducer部分,我想在第1列中找到每个PickupID的出现次数或频率,并在第3列中汇总票价金额。我使用了“count++”,但是输出只返回1次,而不是每个PickupID的正确频率。我看不出您的代码有任何错误。您确定
值中有3个元素吗?
的输出是什么?至于数字格式,您可以使用,例如
String v=String.format(“%d,%,.2f”,count,total)在您的情况下。输出是以下数据示例3列:第1列是PickupID,第2列是DropOffID,第3列是票价金额。在映射器部分,我映射了。在Reducer部分,我想在第1列中找到每个PickupID的出现次数或频率,并在第3列中汇总票价金额。我使用了“count++”,但是输出只返回1次,而不是每个PickupID的正确频率。我看不出您的代码有任何错误。您确定
值中有3个元素吗?
1     3, 1,201.22