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