需求:
有一组好友数据实例如下:
B: A,C 表示B用户加了A、C为好友
1 | A:B,C |
我们通过这样的数据通过MapReduce去统计出A、B、C、D之间的共同好友数量(没有共同好友的不输出),例如统计结果如下:
1 | A-B 1 |
解决思路
我们在map阶段时,可以将 用户:好友,好友,好友...
”转换成 <好友,用户>
模式,所表达的意思就是:把谁加了某些人转换成某个人被谁加过。我们在reduce阶段就可以收到加了某个人的所有用户,这些用户至少就有这么一个共同用户了,我们将所有reduce共同好友数据记录下来,就可以得到每个用户之间的共同好友数量了。
代码如下:
1 | /** |