我目前正在尝试开发一些MapReduce伪代码,用于计算特定网站的每个用户共有的朋友数量。然而,友谊不是相互的,这就是我的问题。 我的输入包括以下形式的用户列表和他们各自的朋友: A - > (B C E),B - > (C F H)等。
到目前为止我开发的伪代码是
MAP (String Input_key, String Input_Value):
\\ Input_key: person
\\ Input_Value: list of their friends
for each pair in Input_Value:
Emit (pair, 1)
REDUCE (String Intermediate_key, Iterator (Intermediate_Values):
\\ Intermediate_key: pair of friends
\\ Intermediate_values: list of '1's corresponding to the number of people who are friends with both in the pair
int count = 0;
for each v value in Intermediate_values:
count += ParseInt (v);
Emit (Intermediate_key, count);
但是,我不认为上面的代码适合友情不相互的情况(因为A是B对C的朋友并不意味着B和C是A的朋友)。
任何人都可以对此有所了解或指出我正确的方向来解决这个问题吗?
非常感谢任何帮助。
提前致谢。