Spark實戰練習03 Pair RDD

2022-03-06 17:31:19 字數 1458 閱讀 4870

一、場景

現有某**的**日誌,內容為使用者對**的請求,包含user id、ip address、datetime……等等

另有乙份檔案中包含使用者的賬戶詳細資訊資料,包含user id、creation date、first 、last name等等

二、任務

1、統計每位使用者的請求次數

// 

1、從檔案建立乙個rdd,每行為乙個元素,*讀取目錄下所有檔案

val mydata=sc.textfile("hdfs:/loudacre/weblogs/*")

// 2、分組資料

val mydata1=mydata.map(line => line.split(" "))

// 3、構造k-v,pair rdd

val mydata2=mydata1.map(line =>(line(2),1))

// 4、統計使用者的請求次數

val mydata3=mydata2.reducebykey((v1,v2)=> v1 + v2)

2、統計相同請求次數的使用者

//

1、轉置,將次數與使用者id互換位置,方便使用countbykey得到乙個map結構

val mydata4=mydata3.map(line=>(line._2,line._1))

//2、計算相同請求次數的使用者

val myresult1=mydata4.countbykey()

3、統計使用者訪問的ip位址

//

1、構建使用者:ip pair rdd

val mydata5=mydata1.map(line =>(line(2),line(0)))

//2、統計使用者訪問的ip位址

val myresult2=mydata5.groupbykey()

4、關聯兩個檔案,得到使用者的訪問次數

rdd格式:

userid1 6 rick hopper

userid2 8 lucio arnold

userid3 2 brittany parrott

//

1、引入資料,建立乙個rdd,每行為乙個元素

val mydata6=sc.textfile("hdfs:/loudacre/accounts/*")

//2、分組資料,得到陣列

val mydata7=mydata6.map(line=>line.split(","))

//3、構建結構

val mydata8=mydata7.map(line=>(line(0),line))

//4、連線資料

val myresult3=mydata8.join(mydata3)

//5、格式化輸出

for( line <- myresult3.take(10))

Spark 操作hive實戰練習

比如 user3,已經有了5月5號的訂單 不公開 來評測模型的 我們有的是5月4號之前的歷史資料 我們需要 通過歷史 5月4號之前訂單資料 這個使用者5月5號買了什麼 1 資料準備 a 在hive中建立orders訂單外部表 b 在hive中建立products商品外部表 c 在hive中建立pri...

《spark實戰》筆記03 核心模組 RDD

spark的核心元件包括rdd scheduler storage shuffle四部分 rdd是spark最核心最精髓的部分,spark將所有資料都抽象成rdd。scheduler是spark的排程機制,分為dagscheduler和taskscheduler。storage模組主要管理快取後的r...

Spark實戰練習01 XML資料處理

一 要求 將xml中的account number model資料提取出來,並以account number model格式儲存 1 xml檔案資料格式 activations activation timestamp 1225499258 type phone account number 316...