核心**如下
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...