您好,登錄后才能下訂單哦!
需求:
/ 解決是一個(gè)各個(gè)子模塊內(nèi)的熱度排名--》 排名得用sortBy ---》 (可能就是簡(jiǎn)單的排序,或者是二次排序) ---》
// 前面有一個(gè)wordCount---》 算出次數(shù)出來(lái) --》 考慮什么作為key
//算的一個(gè)網(wǎng)站下面,每個(gè)子模塊下面的網(wǎng)頁(yè)熱度前2名 :
// 算的一個(gè)網(wǎng)站下面,每個(gè)子模塊下面的網(wǎng)頁(yè)熱度前2名 --》 每個(gè)子模塊下面的網(wǎng)頁(yè)的次數(shù)的前2名
// 在實(shí)際開(kāi)發(fā)中,真正代碼時(shí)間可能只占20-30% ,其他時(shí)間都在理解需求,想思路
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() } }
運(yùn)行結(jié)果會(huì)把網(wǎng)站的日志數(shù)據(jù)按照某一模塊的要求列出排名前2個(gè)結(jié)果展示出來(lái)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。