溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Spark 分析網(wǎng)站排名熱度

發(fā)布時(shí)間:2020-06-01 04:57:27 來(lái)源:網(wǎng)絡(luò) 閱讀:502 作者:ChinaUnicom110 欄目:大數(shù)據(jù)

需求:

/ 解決是一個(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)。

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI