hadoop字段的不同计数

wqnecbli  于 2021-06-04  发布在  Hadoop
关注(0)|答案(3)|浏览(317)

我有一个文件,其格式如下:
1,5321234567
1,5324564321
1,5324564321
2,1234567643
2,1234567666
2,9875422345
3,5344435345
3,5344435345
3,5344435345
3,5344435345
3,5345345312
3,8767564564
在reduce过程的最后,我需要第二个字段的不同计数,第一个字段是关键。例如
1,2
2,3
3,3
java中最简单的map和reduce函数是什么?
tnx公司。

3bygqnnd

3bygqnnd1#

如果我正确理解你的目标,你需要:
使每个键的值唯一
计算每个“键”的不同项目数
所以最简单的方法是这样的:
假设输入是{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
esyap4oy

esyap4oy2#

据我所知,您需要一个键的唯一值计数,而不是保留值。我们只需从记录中创建键,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));
      }

减速器也可用作合路器。

zaq34kh6

zaq34kh63#

只是做分类。获取arraylist中的所有输入并进行排序。
这对你有帮助
数组

相关问题