1、什么是PV值
PV(page
view)即页面浏览量或点击量,是衡量一个网站或网页用户访问量。具体的说,PV值就是所有访问者在24小时(0点到24点)内看了某个网站多少个页面或某个网页多少次。PV是指页面刷新的次数,每一次页面刷新,就算做一次PV流量。度量方法就是从浏览器发出一个对网络服务器的请求(Request),网络服务器接到这个请求后,会将该请求对应的一个网页(Page)发送给浏览器,从而产生了一个PV。那么在这里只要是这个请求发送给了浏览器,无论这个页面是否完全打开(下载完成),那么都是应当计为1个PV。
2、什么是UV值
UV(unique
visitor)即独立访客数,指访问某个站点或点击某个网页的不同IP地址的人数。在同一天内,UV只记录第一次进入网站的具有独立IP的访问者,在同一天内再次访问该网站则不计数。UV提供了一定时间内不同观众数量的统计指标,而没有反应出网站的全面活动。
//60.208.6.156 - - [18/Sep/2013:06:49:48 +0000] “GET /wp-content/uploads/2013/07/rcassandra.png HTTP/1.0” 200 185524 “http://cos.name/category/software/packages/” “Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36”
需求如下
1、求pv:
2、求uv:
求数据来源最大的前5条
数据链接
package scala.day02
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
/**
* Author:SZX
* Date:2020/10/19 15:35
* Version:1.0
* Description:
*/
object access {
def main(args: Array[String]): Unit = {
//1 初始化配置,建立连接
val conf: SparkConf = new SparkConf().setAppName("wc").setMaster("local[*]")
val sc = new SparkContext(conf)
sc.setLogLevel("WARN")
//2读取数据
val file: RDD[String] = sc.textFile("E:\\test\\access.log")
//3 切割数据
val rdd: RDD[String] = file.map(_.split(" ")(0))
//求pv:
println(rdd.count())
// 2、求uv:
println(rdd.distinct().count())
// 3、求数据来源最大的前5条
val filterRDD: RDD[String] = file.filter(_.split(" ").length > 10).map(_.split(" ")(10)).filter(_.contains("http://"))
val url: Array[(String, Int)] = filterRDD.map((_, 1)).reduceByKey(_ + _).sortBy(_._2, false).take(5)
url.foreach(println)
}
}