Spark 2.x管理与开发-Spark Core-【Spark基础编程案例】案例一:求网站的访问量
Posted on 2020-07-17 17:08 MissRong 阅读(200) 评论(0) 收藏 举报Spark 2.x管理与开发-【Spark基础编程案例】案例一:求网站的访问量
一、Tomcat的访问日志

二、要求
求出访问量最高的两个网页
要求显示:网页名称、访问量
三、代码实现
package coreExamples
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
/**
* Spark Core案例-1
* 求网站的访问量-求出访问量最高的两个网页
*/
object MyTomcatLogCount {
//本质就是WordCount
def main(args: Array[String]): Unit = {
//首先,创建SparkContext对象
val conf = new SparkConf().setMaster("local").setAppName("MyTomcatCount")
val sc = new SparkContext(conf)
/**
* 读入日志解析
* 192.168.88.1 - - [30/Jul/2017:12:54:42 +0800] "GET /MyDemoWeb/web.jsp HTTP/1.1" 200 239
* (web.jsp,1)
*/
val rdd1 = sc.textFile("D:/大数据高级资料及测试/Spark Core案例数据/localhost_access_log.2017-07-30.txt")
.map(
line => {
//一、解析字符串
//1.得到两个引号之间的东西
val index1 = line.indexOf("\"")
val index2 = line.lastIndexOf("\"")
//GET /MyDemoWeb/web.jsp HTTP/1.1
val line1 = line.substring(index1 + 1, index2)
//2.得到两个空格之间的东西
val index3 = line1.indexOf(" ")
val index4 = line1.lastIndexOf(" ")
///MyDemoWeb/web.jsp
val line2 = line1.substring(index3, index4)
//3.得到jsp名字
//web.jsp
val jspName = line2.substring(line2.lastIndexOf("/") + 1)
//4.返回jsp名字并计数
(jspName, 1)
})
//二、整合
//1.将相同Key的value进行累加汇总
val rdd2 = rdd1.reduceByKey(_ + _)
//2.按照value排序
val rdd3 = rdd2.sortBy(_._2, false)
//3.取出访问量中最高的两个网页
rdd3.take(2).foreach(println)
sc.stop()
}
}
四、运行结果

浙公网安备 33010602011771号