MapReduce實現尋找共同好友

2021-08-07 08:13:22 字數 2976 閱讀 3383

給出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,o

j:b,o

k:a,c,d

l:d,e,f

m:e,f,g

o:a,h,i,j

輸出格式:

a-b:	c,e

...

此題旨在求兩人之間的共同好友,原資訊是《人,該人的所有好友》,因此首先以好友為鍵,人為值,交給reduce找出擁有此好友的所有人;再將這些人中兩兩配對作為鍵,之前的鍵(好友)作為值交給reduce去合併

簡而言之我打算分成兩個步驟,兩次迭代

1)求出每乙個人都是哪些人的共同好友

2)把這些人(用共同好友的人)作為key,其好友作為value輸出

第一階段的reduce函式主要完成以下任務

1.對所有傳過來的《朋友,list(人)>進行拼接,輸出《朋友,擁有這名朋友的所有人》

*/static class sharedfriendreducer01 extends reducer

sb.deletecharat(sb.length()-1);

context.write(key, new text(sb.tostring()));

} }/*

第二階段的map函式主要完成以下任務

1.將上一階段reduce輸出的《朋友,擁有這名朋友的所有人》資訊中的 「擁有這名朋友的所有人」進行排序 ,以防出現b-c c-b這樣的重複

2.將 「擁有這名朋友的所有人」進行兩兩配對,並將配對後的字串當做鍵,「朋友」當做值輸出,即輸出《人-人,共同朋友》

*/@override

protected void map(longwritable key, text value,context context)

throws ioexception, interruptedexception

for(string friend : set)

sb.deletecharat(sb.length()-1);

context.write(key, new text(sb.tostring()));

} }public static void main(string args)throws exception

}1)第一階段輸出檔案的內容

a	i,k,c,b,g,f,h,o,d

b a,f,j,e

c a,e,b,h,f,g,k

d g,c,k,a,l,f,e,h

e g,m,l,h,a,f,b,d

f l,m,d,c,g,a

g mh o

i o,c

j ok b

l d,e

m e,f

o a,h,i,j,f

2)第二階段輸出檔案的內容

a-b:	c,e

a-c: d,f

a-d: e,f

a-e: b,c,d

a-f: b,c,d,e,o

a-g: c,d,e,f

a-h: c,d,e,o

a-i: o

a-j: b,o

a-k: c,d

a-l: d,e,f

a-m: e,f

b-c: a

b-d: a,e

b-e: c

b-f: a,c,e

b-g: a,c,e

b-h: a,c,e

b-i: a

b-k: a,c

b-l: e

b-m: e

b-o: a

c-d: a,f

c-e: d

c-f: a,d

c-g: a,d,f

c-h: a,d

c-i: a

c-k: a,d

c-l: d,f

c-m: f

c-o: a,i

d-e: l

d-f: a,e

d-g: a,e,f

d-h: a,e

d-i: a

d-k: a

d-l: e,f

d-m: e,f

d-o: a

e-f: b,c,d,m

e-g: c,d

e-h: c,d

e-j: b

e-k: c,d

e-l: d

f-g: a,c,d,e

f-h: a,c,d,e,o

f-i: a,o

f-j: b,o

f-k: a,c,d

f-l: d,e

f-m: e

f-o: a

g-h: a,c,d,e

g-i: a

g-k: a,c,d

g-l: d,e,f

g-m: e,f

g-o: a

h-i: a,o

h-j: o

h-k: a,c,d

h-l: d,e

h-m: e

h-o: a

i-j: o

i-k: a

i-o: a

k-l: d

k-o: a

l-m: e,f

MapReduce尋找共同好友

1.測試檔案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 2....

求共同好友案例 mapreduce實現

friends.txt a b,c,d,f,e,o b a,c,e,k c f,a,d,i d a,e,f,l需求 求每兩個人的共同好友 a和b,a和c a b,c,d,f,e,o b a,c,e,k 好友列表作為k b a c a d a a b c b e b 將matask端的value 本人...

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函式的的輸入...