PV是网站分析的一个术语,用以衡量网站用户访问的网页的数量。对于广告主,PV值可预期它可以带来多少广告收入。一般来说,PV与来访者的数量成正比,但是PV并不直接决定页面的真实来访者数量,如同一个来访者通过不断的刷新页面,也可以制造出非常高的PV。
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提供了一定时间内不同观众数量的统计指标,而没有反应出网站的全面活动。
数据信息:实例1:
访问pv
package ddd.henu.pvuvimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object PvScala { def main(args: Array[String]): Unit = { val conf = new SparkConf().setMaster("local").setAppName("pv") val sc = new SparkContext(conf) sc.setLogLevel("error") val lines: RDD[String] = sc.textFile("./data/pvuvdata") val tup: RDD[(String, Int)] = lines.map(line => { new Tuple2(line.split("t")(5), 1) }) val result = tup.reduceByKey((v1:Int,v2:Int) => {v1+v2}) result.foreach(println) }} 简写并排序: lines.map(line=>{(line.split("t")(5),1)}).reduceByKey((v1:Int,v2:Int)=>{ v1+v2 }).sortBy(tp=>{tp._2},false).foreach(println)运行结果:
(www.suning.com,18547) (www.gome.com.cn,18550) (www.jd.com,18478) (www.dangdang.com,18587) (www.taobao.com,18467) (www.mi.com,18454) (www.baidu.com,18475)
实例2:统计uv:
lines.map(line=>{line.split("t")(0)+"_"+line.split("t")(5)}) .distinct() .map(one=>{(one.split("_")(1),1)}) .reduceByKey(_+_) .sortBy(_._2,false) .foreach(println)结果:
(www.dangdang.com,15726)
(www.suning.com,15637)
(www.baidu.com,15586)
(www.gome.com.cn,15576)
(www.jd.com,15571)
(www.taobao.com,15567)
(www.mi.com,15534)