MapReduce尋找共同好友

2021-08-20 20:04:57 字數 1709 閱讀 9058

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.方法

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...