Spark實現之 好友推薦

2021-08-14 10:12:55 字數 1478 閱讀 9941

網上好多好推薦之類的部落格都是基於二度好友的推薦,下面介紹基於鄰接表的好友推薦的spark實現。

輸入:

1 2,3,4,5,6,7,8  

2 1,3,4,5,7

3 1,2

4 1,2,6

5 1,2

6 1,4

7 1,2

8 1

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

思路:1、key為user,value可設計成user有關聯關係的人及關聯關係的說明,例如:

key:"1"  value:<"2", "yes"> 表示"1"與"2"已經是好友關係

key:"2" value:<"3", "1">表示"2"與"3"共同的好友為"1"

2、對reduce後的key的value做歸類,比如把key為"2"的value的第乙個值為"3"的value歸為一組,這一組value中的第二個值若沒有"yes"出現,則把"3"推薦給"2",若有"yes"出現,說明"2"與"3"已為好友關係。

步驟:1、map:讀取每行資料,組合user與每乙個好友,兩兩組合user的好友。

package dabook

import org.apache.spark.

import collection.mutable.

import scala.collection.mutable

object recommfriend

val host = arr(0).trim //主體

val friends = arr(1).trim

val arr_frinds = friends.split(",") //主體的列表

for (s <- arr_frinds)

for(i <- range(0, arr_frinds.length); j <- range(i+1, arr_frinds.length))

result

} def myreduce(x:iterable[(string, string)]): string =

var sb = new mutable.stringbuilder()

val ks = mm.keys

for(k <- ks)

}if(flag)

if(sb.length > 2)

else

}result

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

def test(): unit =

def test1(): unit =

}}

輸出:

(8,推薦好友:2 共同的好友:1 | 推薦好友:5 共同的好友:1 | 推薦好友:7 共同的好友:1 | 推薦好友:4 共同的好友:1 | 推薦好友:6 共同的好友:1 | 推薦好友:3 共同的好友:1)

(1,)

推薦演算法之好友推薦

寫點自己的理解,大牛請直接略過。好友推薦裡有推薦一些你可能認識的人,其中二度人脈是其中一種。比如 何炅和謝娜 在微博上相互關注,那用二度人脈的方法就是找和謝娜相互關注的人 如 張杰,海濤,某人 這時候 張杰,海濤,某人 就是何炅的二度人脈,排除掉何炅已經相互關注的張杰,剩下 張杰和某人 於是何炅發現...

Spark實現之 查詢共同好友

輸入 鄰接表 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為兩兩...

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