这里所介绍的示例源自于一道面试题,
因直接粘贴逻辑影响格式,这里直接截图,如果有需要源码的人,可私信我。
对于共同好友的分析,常见于我们各个社交软件中,比如QQ等。
这里分析基于Hadoop相关技术实现逻辑。
言归正传:
以下是QQ好友列表数据,冒号前是一个用户,冒号后是该用户的所有好友(数据中的好友是单向的)
A:B,C,D,F,E,O
B:A,C,E,K
C:F,A,D,I
D:A,E,F,L
E:B,C,D,M,L
F:A,B,C,D,E,O,M
G:A,C,D,E,F
H:A,C,D,E,O
I:A,O
J:B,O
K:A,C,D
L:D,E,F
M:E,F,G
O:A,H,I,J
求出:哪些人两两之间有共同好友以及他俩的共同好友都有谁?
整体解决思路是:
1、先求出用户是哪些人的共同好友,比如:a是b、c 等用户都具备
2、然后再得到哪些人有一些共同的好友。
所以,这里需要执行2次mapreduce程序,第一次执行目的是上述第一步。然后,第二步基于第一步内容。
【1】执行第一次mapreduce程序
上述mapreduce执行完后,得到输出的文件如下:
【2】基于第一次执行完的文件,执行第二次mapreduce逻辑:
得到最终的结果文件为:
至此,得到结果。