分享

求助一道mapreduce程序

chenhenry 发表于 2015-6-10 16:43:41 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 7 13572
比如有这么一些数据
id     sex
1      男
2      女
1      男
3      男
2      女
4      男
4      男
5      女
... ...
如何编写mapreduce,统计出男的有多少人,女的有多少人(需要按id去重)
要求,只要一个mapreduce job实现,不能分多个job.

已有(7)人评论

跳转到指定楼层
yuwenge 发表于 2015-6-10 17:07:11
这个问题比较经典,而且多个地方都用到。

思路:
首先map归类。
然后reduce在统计的时候,把相同的记录,只加1即可

类似的参考
MapReduce初级案例(1):使用MapReduce去重
回复

使用道具 举报

chenhenry 发表于 2015-6-10 17:15:35
yuwenge 发表于 2015-6-10 17:07
这个问题比较经典,而且多个地方都用到。

思路:

多谢你的回复,但是我现在碰到的难题是,去重那一部分我解决了,但是如何在去重的基础上继续计算出结果呢?
回复

使用道具 举报

Alkaloid0515 发表于 2015-6-10 17:46:07
chenhenry 发表于 2015-6-10 17:15
多谢你的回复,但是我现在碰到的难题是,去重那一部分我解决了,但是如何在去重的基础上继续计算出结果呢 ...

去重解决了,结果自然出来了。

比如:
统计
1,2,2,3
那么我开始统计
if(a!=b)
{i=i+1;
printf(a);
}
上面是伪代码,楼主自行修改。
其实这样就出来了。
在去重的同时,我们也输出。对于重复不输出即可

回复

使用道具 举报

longyi81 发表于 2015-6-10 18:42:15
有没有代码?想学习下!
回复

使用道具 举报

desehawk 发表于 2015-6-10 19:32:20
longyi81 发表于 2015-6-10 18:42
有没有代码?想学习下!

明白了这个案例,你的问题就解决了,里面有代码

MapReduce初级案例(1):使用MapReduce去重
回复

使用道具 举报

ding123lei 发表于 2015-6-11 15:47:34
我觉得在map数据时 key为sex value为id 在reduce端Iterator的累加的时候记录加过的id值 先判断这个id有没有记录过 没有记录过则+1 记录过则直接continue 这样就可以了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条