热门IT资讯网

Spark 分析网站排名热度

发表于:2024-11-24 作者:热门IT资讯网编辑
编辑最后更新 2024年11月24日,需求:/ 解决是一个各个子模块内的热度排名--》 排名得用sortBy ---》 (可能就是简单的排序,或者是二次排序) ---》// 前面有一个wordCount---》 算出次数出来 --》 考虑

需求:

/ 解决是一个各个子模块内的热度排名--》 排名得用sortBy ---》 (可能就是简单的排序,或者是二次排序) ---》

// 前面有一个wordCount---》 算出次数出来 --》 考虑什么作为key


//算的一个网站下面,每个子模块下面的网页热度前2名 :

// 算的一个网站下面,每个子模块下面的网页热度前2名 --》 每个子模块下面的网页的次数的前2名


// 在实际开发中,真正代码时间可能只占20-30% ,其他时间都在理解需求,想思路

import java.net.URLimport 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个结果展示出来。

0