spark统计pv和uv值
文章目录
- PV 值:page view
- 代码逻辑
- UV (unique visitor )即独立访客数
PV 值:page view
页面浏览量或点击量,是衡量一个网站或网页用户访问量。具体的说,PV 值就是所有访问者在 24 小时(0 点到 24 点)内看了某个网站多少个页面或某个网页多少次。PV 是指页面刷新的次数,每一次页面刷新,就算做一次 PV 流量。
代码逻辑
- 取网址链接mapToPair 产生(网址链接,1)的tuple
- reduceByKey
- foreach打印
SparkConf conf = new SparkConf();conf.setMaster("local").setAppName("PV");JavaSparkContext context = new JavaSparkContext(conf);JavaRDD<String> lineRDD = context.textFile("./data/pvuvdata");lineRDD.mapToPair(new PairFunction<String, String, Integer>() {@Overridepublic Tuple2<String, Integer> call(String line) throws Exception {String string = line.split("\t")[5];return new Tuple2<>(string,1);}}).reduceByKey(new Function2<Integer, Integer, Integer>() {@Overridepublic Integer call(Integer v1, Integer v2) throws Exception {return v1+v2;}}).foreach(new VoidFunction<Tuple2<String, Integer>>() {@Overridepublic void call(Tuple2<String, Integer> stringIntegerTuple2) throws Exception {System.out.println("网址"+stringIntegerTuple2);}});lineRDD.mapToPair(new PairFunction<String, String, Integer>() {@Overridepublic Tuple2<String, Integer> call(String line) throws Exception {String string = line.split("\t")[5];return new Tuple2<>(string,1);}}).groupByKey().foreach(new VoidFunction<Tuple2<String, Iterable<Integer>>>() {@Overridepublic void call(Tuple2<String, Iterable<Integer>> s) throws Exception {int count = 0 ;Iterator<Integer> iterator = s._2.iterator();while (iterator.hasNext()){count ++;}System.out.println("url : "+ s._1 + " value " + count);}});
SparkConf conf = new SparkConf();conf.setMaster("local").setAppName("PV");JavaSparkContext context = new JavaSparkContext(conf);JavaRDD<String> lineRDD = context.textFile("./data/pvuvdata");lineRDD.mapToPair(new PairFunction<String, String, Integer>() {@Overridepublic Tuple2<String, Integer> call(String line) throws Exception {String string = line.split("\t")[5];return new Tuple2<>(string,1);}}).reduceByKey(new Function2<Integer, Integer, Integer>() {@Overridepublic Integer call(Integer v1, Integer v2) throws Exception {return v1+v2;}}).foreach(new VoidFunction<Tuple2<String, Integer>>() {@Overridepublic void call(Tuple2<String, Integer> stringIntegerTuple2) throws Exception {System.out.println("网址"+stringIntegerTuple2);}});Map<String, Object> map = lineRDD.mapToPair(new PairFunction<String, String, Integer>() {@Overridepublic Tuple2<String, Integer> call(String line) throws Exception {String string = line.split("\t")[5];return new Tuple2<>(string, 1);}}).countByKey();for (String key : map.keySet()){System.out.println("key : "+ key + " value :" + map.get(key));}
UV (unique visitor )即独立访客数
指访问某个站点或点击某个网页的同 不同 IP 地址的人数。在同一天内,UV 只记录第一次进入网站的具有独立IP 的访问者,在同一天内再次访问该网站则不计数。UV 提供了一定时间内不同观众数量的统计指标,而没有反应出网站的全面活动
SparkConf conf = new SparkConf();conf.setMaster("local").setAppName("TestUV");JavaSparkContext context = new JavaSparkContext(conf);JavaRDD<String> lineRDD = context.textFile("./data/pvuvdata");JavaPairRDD<String, Iterable<String>> rdd1 = lineRDD.mapToPair(new PairFunction<String, String, String>() {@Overridepublic Tuple2<String, String> call(String s) throws Exception {String url = s.split("\t")[5];String ip = s.split("\t")[0];return new Tuple2<>(url, ip);}}).groupByKey();rdd1.foreach(new VoidFunction<Tuple2<String, Iterable<String>>>() {@Overridepublic void call(Tuple2<String, Iterable<String>> t) throws Exception {HashSet<Object> set = new HashSet<>();Iterator<String> iterator = t._2.iterator();while (iterator.hasNext()){set.add(iterator.next());}System.out.println(" key : "+t._1+ " value :"+set.size());}});
SparkConf conf = new SparkConf();conf.setMaster("local").setAppName("TestUV");JavaSparkContext context = new JavaSparkContext(conf);JavaRDD<String> lineRDD = context.textFile("./data/pvuvdata");Map<String, Object> map = lineRDD.mapToPair(new PairFunction<String, String, String>() {@Overridepublic Tuple2<String, String> call(String s) throws Exception {String url = s.split("\t")[5];String ip = s.split("\t")[0];return new Tuple2<>(url, ip);}}).distinct().countByKey();for (String key : map.keySet()){System.out.println(" key : "+ key+ " value: "+ map.get(key));}
spark统计pv和uv值相关推荐
- 使用Nginx访问日志统计PV和UV
一个网站当用户量增大时候,不可避免有统计pv和uv的需求. UV(Unique Visitor):独立访客,以cookie为依据区分不同访客,UV计算一天之内(00:00-24:00),访问网站的访客 ...
- 通过MapReduce统计PV和UV
通过MapReduce统计PV和UV 一.pv(page view,页面浏览量) PV(page view),即页面浏览量:用户每1次对网站中的每个网页访问均被记录1次.用户对同一页面的多次访问,访问 ...
- java统计 pv uv_统计PV、UV的新武器——Aviator
本文的主角Aviator,是一个高性能.轻量级的基于java实现的表达式引擎,它动态地将String类型的表达式编译成Java ByteCode并交给JVM执行. Aviator支持绝大多数运算操作符 ...
- nginx日志统计pv、uv命令
nginx 的access.log日志中统计访问量 统计pv 排除掉静态文件访问 grep "https://www.baidu.com/" access.log | grep - ...
- java pv uv 统计_shell统计pv和uv、独立ip的方法
每天分析日志的哥们实在伤不起,经常需要给出PV,UV,独立IP等一些统计值,使用C/C++,java都可以写,过程是这样的,先读取文件,逐行扫描,把能标记的值放入数据结构中,排重得出最终结果,其实Li ...
- java实现统计pv和uv_shell统计pv与uv、独立ip的方法
问题描述: 每天分析日志的哥们实在伤不起,经常需要给出PV,UV,独立IP等一些统计值,使用C/C++,java都可以写,过程是这样的,先读取文件,逐行扫描,把能标记的值放入数据结构中,排重得出最终结 ...
- shell统计pv和uv、独立ip的方法
每天分析日志的哥们实在伤不起,经常需要给出PV,UV,独立IP等一些统计值,使用C/C++,java都可以写,过程是这样的,先读取文件,逐行扫描,把能标记的值放入数据结构中,排重得出最终结果,其实Li ...
- java统计 pv uv_PV UV QPS 并发数
TPS(Transactions Per Second):每秒事务数QPS(Query Per Second):每秒请求数,QPS其实是衡量吞吐量的一个常用指标,就是说服务器在一秒的时间内处理了多少个 ...
- Spark中pv和uv计算的流程图【图片】
最新文章
- redis集合数据过期_如何从Redis中的集合中自动删除过期的密钥?
- \multirow 表格文字居中(latex强制换行)
- 对云计算的忽视是 银行的战略失误
- 深度学习模型之各种caffe版本(Linux和windows)的网址
- C语言程序设计教学探讨,C语言程序设计多媒体教学探讨
- 批量设置 style
- c语言模拟试卷答案,C语言模拟试卷及其答案
- SlickEdit介绍
- 手把手教你微信小程序开发
- 通讯录 按中文名字 拼音首字母 排序
- 国家航天局:中国将论证建立月球科研基地
- 乌镇现场 | 倪光南:人工智能应该更好的为人类的服务
- el-table单元格不自动换行
- EfficientNet网络详解
- C++中sprintf_s与sprintf的不同
- 用JsonParser解析json树模型
- python3.5中文手册_Python-3.5.X官方学习入门指南中文版
- 做产品和运营必须深参这5大人性弱点
- HDMI和DP线的等级和速度
- 【顺序表和单链表的比较】