輸入:鄰接表
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,...