Spark實現之 查詢共同好友

2021-08-14 10:10:45 字數 1719 閱讀 5873

輸入:鄰接表

100, 200 300 400 500 600

200, 100 300 400

300, 100 200 400 500

400, 100 200 300

500, 100 300

600, 100

第一列表示使用者,後面的表示使用者的好友。

需求:查詢兩兩使用者的共同好友。

思路:1、key為兩兩使用者,value為其中乙個使用者的所有好友

2、求兩個使用者所有好友的交集

步驟:1、map:取每一行,組合user和其任一好友為key(key中的兩個欄位按字典序排列),user的所有好友為value

2、reduce:求兩個使用者之間好友的交集

package dabook

import org.apache.spark.

object commfriend

var result = set[string]()

var small = set[string]()

var big = set[string]()

if(set1.size < set2.size)

else

// println(small.mkstring(","))

for(s <- small)

}return result

} def mymap(x:string): map[tuple2[string, string], string] =

val host = arr(0).trim

val friends = arr(1).trim

val arr_friends = friends.split(" ")

var result = map[tuple2[string, string], string]()

for(friend <- arr_friends)

else

}return result

} def commfri(x:iterable[string]): set[string] =

val arr = x.toarray

var set1 = set[string]()

var set2 = set[string]()

val sz1 = arr(0).split(" ")

val sz2 = arr(1).split(" ")

for(s <- sz1)

for(s <- sz2)

intersection(set1, set2)

} def main(args: array[string]): unit =

def test(): unit =

}}

輸出:

((200,300),set(100, 400))

((100,600),set())

((300,400),set(100, 200))

((100,500),set(300))

((200,400),set(100, 300))

((100,200),set(300, 400))

((100,300),set(200, 400, 500))

((100,400),set(200, 300))

((300,500),set(100))

mysql共同好友 Spark 實現共同好友

核心 如下 object sprk import org.apache.spark.sql.sparksession def main args array string unit logger.getlogger org setlevel level.off logger.getlogger ak...

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