您好,登錄后才能下訂單哦!
需求:
/ 解決是一個各個子模塊內的熱度排名--》 排名得用sortBy ---》 (可能就是簡單的排序,或者是二次排序) ---》
// 前面有一個wordCount---》 算出次數出來 --》 考慮什么作為key
//算的一個網站下面,每個子模塊下面的網頁熱度前2名 :
// 算的一個網站下面,每個子模塊下面的網頁熱度前2名 --》 每個子模塊下面的網頁的次數的前2名
// 在實際開發中,真正代碼時間可能只占20-30% ,其他時間都在理解需求,想思路
import java.net.URL import org.apache.spark.{SparkConf, SparkContext}
object Data_anlysis { def main(args: Array[String]) { val conf = new SparkConf().setAppName("data-anysis").setMaster("local[2]") val sc = new SparkContext(conf) val linesRDD = sc.textFile("d://web_data.log") val rdd01 =linesRDD.map(line => { val lineSplited = line.split("\t") (lineSplited(1),1) }) val rdd02 = rdd01.reduceByKey(_+_) val rdd03 = rdd02.map(tup => { val url = tup._1; val host = new URL(url).getHost (host,url,tup._2) }) val rdd04 = rdd03.groupBy(_._1) val rdd05 = rdd04.mapValues(iter => { iter.toList.sortBy(_._3).reverse.take(2) }) println(rdd05.collect().toBuffer) sc.stop() } }
運行結果會把網站的日志數據按照某一模塊的要求列出排名前2個結果展示出來。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。