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

2021-10-19 19:09:05 字數 1145 閱讀 2681

核心**如下

object sprk

import org.apache.spark.sql.sparksession

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

logger.getlogger("org").setlevel(level.off)

logger.getlogger("akka").setlevel(level.off)

system.setproperty("hadoop.home.dir", "e:\\hadoop-2.6.0-cdh5.15.0")

val ss = sparksession

.builder()

.master("local")

.getorcreate()

val sc = ss.sparkcontext

val rdd=sc.parallelize(list(("a","bcdekl"),("b","ekl"),("c","eklbcd")))

val rdd1=rdd.flatmapvalues(x=>x.split("")).map(x=>(x._2,x._1))

rdd1

.join(rdd1)

.filter(x=>x._2._1

.map(x=>(x._2,x._1))

.groupbykey()

.foreach(println)

第一步: 這是開始的資料 ,id  好友.

第二步: 展開value , 使用到了 mapvalues()  運算元

第三步: 將 pairrdd 互調位置

因為我們是要以共同好友來聚合 , 所以好友在左邊 , 使用者id 在右邊

.map(x=>(x._2,x._1))

第四步 ,很重要 , 我們用join ,

得到的就是 好友 , id1 ,id2  ,但是會有1/4符合條件 , 需要過濾

.filter(x=>x._2._1

讓 字母比大小 , 小的在前面 ,這樣就只會有乙個資料

這樣得到的是 id的組合 , 以及他們的共同好友 , 然後反轉 k v ,再reduce就好了

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

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