文章目录

  • PV 值:page view
    • 代码逻辑
  • UV (unique visitor )即独立访客数

PV 值:page view

页面浏览量或点击量,是衡量一个网站或网页用户访问量。具体的说,PV 值就是所有访问者在 24 小时(0 点到 24 点)内看了某个网站多少个页面或某个网页多少次。PV 是指页面刷新的次数,每一次页面刷新,就算做一次 PV 流量。

代码逻辑

  1. 取网址链接mapToPair 产生(网址链接,1)的tuple
  2. reduceByKey
  3. 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值相关推荐

  1. 使用Nginx访问日志统计PV和UV

    一个网站当用户量增大时候,不可避免有统计pv和uv的需求. UV(Unique Visitor):独立访客,以cookie为依据区分不同访客,UV计算一天之内(00:00-24:00),访问网站的访客 ...

  2. 通过MapReduce统计PV和UV

    通过MapReduce统计PV和UV 一.pv(page view,页面浏览量) PV(page view),即页面浏览量:用户每1次对网站中的每个网页访问均被记录1次.用户对同一页面的多次访问,访问 ...

  3. java统计 pv uv_统计PV、UV的新武器——Aviator

    本文的主角Aviator,是一个高性能.轻量级的基于java实现的表达式引擎,它动态地将String类型的表达式编译成Java ByteCode并交给JVM执行. Aviator支持绝大多数运算操作符 ...

  4. nginx日志统计pv、uv命令

    nginx 的access.log日志中统计访问量 统计pv 排除掉静态文件访问 grep "https://www.baidu.com/" access.log | grep - ...

  5. java pv uv 统计_shell统计pv和uv、独立ip的方法

    每天分析日志的哥们实在伤不起,经常需要给出PV,UV,独立IP等一些统计值,使用C/C++,java都可以写,过程是这样的,先读取文件,逐行扫描,把能标记的值放入数据结构中,排重得出最终结果,其实Li ...

  6. java实现统计pv和uv_shell统计pv与uv、独立ip的方法

    问题描述: 每天分析日志的哥们实在伤不起,经常需要给出PV,UV,独立IP等一些统计值,使用C/C++,java都可以写,过程是这样的,先读取文件,逐行扫描,把能标记的值放入数据结构中,排重得出最终结 ...

  7. shell统计pv和uv、独立ip的方法

    每天分析日志的哥们实在伤不起,经常需要给出PV,UV,独立IP等一些统计值,使用C/C++,java都可以写,过程是这样的,先读取文件,逐行扫描,把能标记的值放入数据结构中,排重得出最终结果,其实Li ...

  8. java统计 pv uv_PV UV QPS 并发数

    TPS(Transactions Per Second):每秒事务数QPS(Query Per Second):每秒请求数,QPS其实是衡量吞吐量的一个常用指标,就是说服务器在一秒的时间内处理了多少个 ...

  9. Spark中pv和uv计算的流程图【图片】

最新文章

  1. redis集合数据过期_如何从Redis中的集合中自动删除过期的密钥?
  2. \multirow 表格文字居中(latex强制换行)
  3. 对云计算的忽视是 银行的战略失误
  4. 深度学习模型之各种caffe版本(Linux和windows)的网址
  5. C语言程序设计教学探讨,C语言程序设计多媒体教学探讨
  6. 批量设置 style
  7. c语言模拟试卷答案,C语言模拟试卷及其答案
  8. SlickEdit介绍
  9. 手把手教你微信小程序开发
  10. 通讯录 按中文名字 拼音首字母 排序
  11. 国家航天局:中国将论证建立月球科研基地
  12. 乌镇现场 | 倪光南:人工智能应该更好的为人类的服务
  13. el-table单元格不自动换行
  14. EfficientNet网络详解
  15. C++中sprintf_s与sprintf的不同
  16. 用JsonParser解析json树模型
  17. python3.5中文手册_Python-3.5.X官方学习入门指南中文版
  18. 做产品和运营必须深参这5大人性弱点
  19. HDMI和DP线的等级和速度
  20. 【顺序表和单链表的比较】

热门文章

  1. python基础 面向对象编程
  2. 当析构函数遇到多线程 转载
  3. android 评论发表情,安卓手机怎么在微信朋友圈评论发表情包?
  4. LightGBM综述
  5. 等比缩放公式_iPhone屏幕适配,等比缩放
  6. Java编程之图形化设计求任意输入数的阶乘
  7. 《庄子·内篇·逍遥游第一》
  8. mysql添加用户并赋予权限命令
  9. 大数据图数据库之TAO数据库
  10. 时间序列的极值点提取