需要:
/ 解决办法是在每个子模块中做一个人气排名--》排名一定要用---》(可能是简单排序网站排名,也可能是二次排序)---》
// 前面有一个---"计算次数--"考虑什么是key
//计算一个网站下seo排名,每个子模块下的前2个网页热度:
// 计算一个网站下,每个子模块下top 2个页面的热门度 --》每个子模块下页面的top 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个结果。

seolu于2023-02-11发布在

