014 在Spark中完成PV与UV的计算,重在源代码
1.代码
object LogPVAndUV{
def main(args:Array[String]):Unit={
val conf=new SparkConf()
.setMaster("local[*]")
.setAppName("PVAndUV")
val sc=SparkContext.getOrCreate(conf)
val logPath="/user/beifeng/spark/logs/page_views.data"
val logRDD=sc.textFile(logPath)
val filterRDD=logRDD.filter(_.length>0)
//转换
val mapRDD=filterRDD.map(line=>{
val arr=line.split("\t")
if(arr.length==7){
val date=arr(0).trim
val url=arr(1)
val uuid=arr(2)
(date.subString(0,Math.min(10.date.length)).trim,url,uuid)
}else{
(null,null,null)
}
}).filter(tuple=>tuple._1!=null&&tuple._1.length>0)
//PV计算
val pvRDD=mapRDD
.filter(tuple=>tuple._2.length>0)
.map(tuple=>(tuple._1,1))
.reduceByKey(_+_)
//UV计算
val uvRDD=mapRDD
.filter(tuple=>tuple._3.length>0)
.map(tuple=>(tuple._1,tuple._3))
.distinct
.reduceByKey(_+_)
//合并
val pvAndUv=pvRDD.join(uvRDD).map{
case (date,(pv,uv))=>{
(date,pv,uv)
}
}
//输出
pvAndUv.saveAsTextFile("/user/beifeng/spark/output/"+System.currentTimeMillis())
sc.stop()
}
}
2.PS
rdd.foreachPartition(iter=>{
//
})
对iter迭代器中的数据进行输出,iter表示的是一个分区的所有数据,这里的迭代器和groupbyKey中的实现方式不同,不会产生OOM
主要用于将数据输出到非HDFS的存储系统中,不如MYSQL,Redis
014 在Spark中完成PV与UV的计算,重在源代码的更多相关文章
- 统计中的PV,UV是的意思(转)
PV(访问量):即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次. UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客.00:00-24:00 ...
- [转载]网络编辑必知常识:什么是PV、UV和PR值 zz
1.什么是pv PV(page view),即页面浏览量,或点击量;通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标. 高手对pv的解释是,一个访问者在24小时(0点到24点)内到底看了你网 ...
- Linux运维之每日小技巧-检测网站状态以及PV、UV等介绍
[root@ELK-chaofeng07 httpd]# curl -o /dev/null -w %{http_code}\\n -s www.baidu.com 状态码为200表示成功. PV.U ...
- 网站PV、UV以及查看方法
网站PV.UV以及查看方法 一.名词解释 PV:PV 是Page Views的缩写,即页面浏览量,用户每一次对网站中的每个网页访问均被记录一次.注意,访客每刷新一次页面,pv就增加一次. UV:UV是 ...
- 详解PV、UV、VV、IP及其关系与计算
一.什么是PV? PV即Page View,网站浏览量,指页面浏览的次数,用以衡量网站用户访问的网页数量.用户每次打开一个页面便记录1次PV,多次打开同一页面则浏览量累计.一般来说,PV与来访者的数量 ...
- 【总结整理】pv、uv
1.pv的全称是page view,译为页面浏览量或点击量,通常是衡量一个网站甚至一条网络新闻的指标.用户每次对网站中的一个页面的请求或访问均被记录1个PV,用户对同一页面的多次访问,pv累计.例如, ...
- PV、UV、VV、IP是什么意思?
PV.UV.VV.IP作为网站分析中最常见的基础指标,能够从宏观概括性地衡量网站的整体运营状况,也是检测网站运营是否正常的最直观的指标. 1.VV(来访次数/访问次数):VisitView 记录所有访 ...
- 网站流量统计之PV和UV
转自:http://blog.csdn.NET/webdesman/article/details/4062069 如果您是一个站长,或是一个SEO,您一定对于网站统计系统不会陌生,对于SEO新手来说 ...
- QPS、TPS、PV、UV、IP
QPS TPS PV UV IP GMV RPS QPS.TPS.PV.UV.GMV.IP.RPS等各种名词,外行看起来很牛X,实际上每个程序员都是必懂知识点.下面我来一一解释一下. QPS Quer ...
随机推荐
- luogu P4074 [WC2013]糖果公园
传送门 这种题显然要用树上莫队 何为树上莫队?就是在树上跑莫队算法就是先把树分块,然后把询问离线,按照左端点所在块为第一关键字,右端点所在块为第二关键字,时间戳(如果有修改操作)为第三关键字排序,然后 ...
- luogu P2627 修剪草坪
传送门 单调队列优化dp板子 表示不大想写详细做法,自己看代码吧qwq (懒) 注意细节,不然就会跟我一样WA4次 // luogu-judger-enable-o2 #include<bits ...
- POJ 1811 Prime Test (Rabin-Miller强伪素数测试 和Pollard-rho 因数分解)
题目链接 Description Given a big integer number, you are required to find out whether it's a prime numbe ...
- mysql 显示表字段及mysql系统信息
参考链接: http://www.cnblogs.com/zhwl/archive/2012/08/28/2660532.html SHOW DATABASES ...
- ubuntu16.10安装docker17.03.0-ce并配置国内源和加速器
说明:这个针对docker-ce安装,ce和ee的区别是前者是社区版,后者是企业版 1. 配置Ubuntu的源,不然慢的去哭吧.参考http://cn.archive.ubuntu.com/help ...
- memset()函数
memset需要的头文件 <memory.h> or <string.h> memset <wchar.h> wmemset 函数介绍 void *memset( ...
- 异步编程之使用yield from
异步编程之使用yield from yield from 是 Python3.3 后新加的语言结构.yield from的主要功能是打开双向通道,把最外层的调用方法与最内层的子生成器连接起来.这两者就 ...
- CentOS如何设置终端显示字符界面区域的大小
红框内的文字本应该在上一行后方,调了stty也不行, stty size的值变化,但显示还是没变化 后来参考http://www.jb51.net/os/RedHat/522217.html 修改 / ...
- opencv 图像深度(depth)
原文地址:http://blog.csdn.net/dingfc/article/details/7457984 图像深度是指存储每个像素所用的位数,也用于量度图像的色彩分辨率.图像深度确定彩色图像的 ...
- 集成Struts2+Spring+Hibernate_两种方案
集成Struts2+Spring+Hibernate 第一种方案:让Spring创建Struts2的Action,不让Spring完全管理Struts2的Action Struts2 Act ...