1.測試檔案
a:b,c,d,f,e,o2.方法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
2-1.方法一:
1.將域使用者和好友分別作為值和鍵輸出
:a:b
2.可以看出:b,c,d,f,e,o都有共同好友a,
3.把a的好友兩兩組合作為鍵,a作為值,冒泡輸出
4.經過shuffle處理後,會把bc作為鍵,共同好友作為值放入集合中
5.迭代集合中的好友,一次輸出即可
2-2.方法二:
1.將使用者和好友作為鍵和值輸出
a:b,c,d,f,e,o --a:b,c,d,f,e,o
b:a,c,e,k --b:a,c,e,k
c:f,a,d,i --c:a,d,f,i
d:a,e,f,l --d:a,e,f,l
e:b,c,d,m,l --e:b,c,d,l,m
2.將所有鍵值對新增到map集合中
3.取map的鍵(所有使用者)為陣列
4.迭代陣列,通過使用者名稱"a"在map中取得他的好友
5.迭代除使用者"a"以外的其他使用者,獲取這些使用者的好友;
如果有使用者同時存在於"a"和"b"的好友列表中
那麼這些好友就是"ab"的共同好友
--a:
--b:
"a"中存在"c,e"使用者,"b"中也存在"c,e"使用者,那麼"c,e"就是ab的共同好友
6.將"ab"作為鍵,共同好友作為值輸出即可
3.**public
class
friends
}// reduce
public
static
class
mrreducer
extends
reducer
} finally
}public
void reduce(text key, iterableiterable, context context)
throws ioexception, interruptedexception
}public
void cleanup(reducer.context context)
throws ioexception, interruptedexception
}system.out.println(a + "," + b + " 共同好友 " + a_and_b);
if (a_and_b.length() > 1) }}
for(string s:list)}}
public
static
void main(string args) throws ioexception, classnotfoundexception, interruptedexception
}
MapReduce實現尋找共同好友
給出a o個人中每個人的好友列表,求出哪些人兩兩之間有共同好友,以及他們的共同好友都有誰 原始檔案 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,...
MapReduce 共同好友
下面是a b c d e 5個人的好友情況 a b c d b a c d e c a b d e d a b c e e b c d 第一行的意思是a有bcd 3個好友,下面幾行的以此類推。請使用 map reduce 任務,完成共同好友這個功能。要求 1.描述清楚map和reduce函式的的輸入...
MapReduce找共同好友
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 if b els...