一、需求:计算网页访问量前三名
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
/**
* 需求:计算网页访问量前三名
* 用户:喜欢视频 直播
* 帮助企业做经营和决策
*
* 看数据
*/
object UrlCount {
def main(args: Array[String]): Unit = {
//1.加载数据
val conf:SparkConf = new SparkConf().setAppName("UrlCount").setMaster("local[2]")
//spark程序入口
val sc: SparkContext = new SparkContext(conf)
//载入数据
val rdd1: RDD[String] = sc.textFile("e:/access.log")
//2.对数据进行计算 w,1 h,1
val rdd2: RDD[(String, Int)] = rdd1.map(line => {
val s: Array[String] = line.split("\t")
//标注为出现1次
(s(1), 1)
})
//3.将相同的网址进行累加求和 网页,201
val rdd3:RDD[(String, Int)] = rdd2.reduceByKey(_+_)
//4.排序 取出前三
val rdd4: Array[(String, Int)] = rdd3.sortBy(_._2, false).take(3)
//5.遍历打印
rdd4.foreach(x => {
println("网址为:" + x._1 + "访问量为:" + x._2)
})
//6.关闭资源
sc.stop()
}
}
结果:
二、需求:求出每个学院 访问第一位的网址
import java.net.URL
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
/**
* 需求:求出每个学院 访问第一位的网址
* bigdata:video(直播)
* java:video
* python:teacher
*/
object UrlGroupCount {
def main(args: Array[String]): Unit = {
//1.创建sparkContext
val conf: SparkConf = new SparkConf().setAppName("UrlGroupCount").setMaster("local[2]")
val sc: SparkContext = new SparkContext(conf)
//2.加载数据
val rdd1: RDD[String] = sc.textFile("e:/access.log")
//3.切分
val rdd2: RDD[(String, Int)] = rdd1.map(line => {
val s: Array[String] = line.split("\t")
//网址,1
(s(1), 1)
})
//4.求出总的访问量 网址,总的访问量
val rdd3: RDD[(String, Int)] = rdd2.reduceByKey(_+_)
//5.取出学院
val rdd4: RDD[(String, String, Int)] = rdd3.map(x => {
//拿到ur