Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java hadoop字段的不同计数_Java_Hadoop - Fatal编程技术网

Java hadoop字段的不同计数

Java hadoop字段的不同计数,java,hadoop,Java,Hadoop,我有一个文件,其格式如下: 15321234567 1,5324564321 1,5324564321 2,1234567643 2,1234567666 2,9875422345 3,5344435345 3,5344435345 3,5344435345 3,5344435345 3,5345345312 38767564564 在reduce过程结束时,我需要第二个字段的不同计数,其中第一个字段是键。e、 g 1,2 2,3 3,3 Java中最简单的map和reduce函数是什么 Tnx

我有一个文件,其格式如下:

15321234567 1,5324564321 1,5324564321 2,1234567643 2,1234567666 2,9875422345 3,5344435345 3,5344435345 3,5344435345 3,5344435345 3,5345345312 38767564564

在reduce过程结束时,我需要第二个字段的不同计数,其中第一个字段是键。e、 g

1,2 2,3 3,3

Java中最简单的map和reduce函数是什么


Tnx.

只需进行排序即可。获取arraylist中的所有输入并进行排序

这对你有帮助


如果我正确理解您的目标,您需要:

使每个键的值唯一 计算每个键的不同项目数 所以最简单的方法就是这样:

假设输入是{A,B}

MAP 1:
   Output Key  : {A,B}
   Output Value: 1
REDUCE 1:
   Input Key   : {A,B}
   Input Values: {1,1,1,...}
   Output Key  : A
   Output Value: B

MAP 2:
   Output Key  : A
   Output Value: 1
REDUCE 2:
   Input Key   : A
   Input Values: {1,1,1,...}
   Output Key  : A
   Output Value: SUM of all the values

据我所知,您需要一个键的唯一值计数,而不是保留值。 通过从记录中创建密钥,rest hadoop framwork将为您处理唯一记录的排序

    map (IntWritable key, Text value, Context context) {

       context.write(value, new IntWritable(1)); 
    }

    reduce (Text key, Iterable<IntWritable> values, Context context) {

         long count = 0;
         for (Iterator<IntWritable> iterator = values.iterator(); iterator.hasNext();) {
              count+= iterator.next().get();
         }

         context.write(key, new LongWritable(count));
      }

Reducer也可以用作合并器。

解析行并将每行添加到映射中。例如,在第三行之后,您将有[1,{5321234567,5324564321}],reduce步骤只返回每个键的设置大小。ArrayList不会扩展到Hadoop中。这会将所有值放入内存中。非常糟糕的主意,是的。。。我只是举了一个使用Set的例子。正如我提到的…在我的解释中它并不完美。。。。。