java统计 pv uv_统计PV、UV的新武器——Aviator
本文的主角Aviator,是一个高性能、轻量级的基于java实现的表达式引擎,它动态地将String类型的表达式编译成Java ByteCode并交给JVM执行。
Aviator支持绝大多数运算操作符,包括算术操作符、关系运算符、逻辑操作符、位运算符、正则匹配操作符(=~)、三元表达式(?:) ,同时支持表达式的优先级,优先级跟Java的运算符一样,并且支持通过括号来强制优先级。Aviator 5.0版本的功能更加丰富了,传送门。
Aviator很适合PV、UV的计算。它比Drools轻量,执行效率高,比正则表达式的表达能力强。灵活运用Aviator可以使得很多数据统计的代码变得更通用。
一般来说,常见的PV和UV的统计,都是如下的计算流程:
在Map阶段:
1、过滤掉不符合条件的数据
2、符合条件的数据输出key,1
在Reduce阶段:
1、要么累加,要么求平均
以上的三个步骤中,Map阶段的两个步骤可以通过Aviator脚本变成动态的,Map的第二个阶段输出的数据的Value可以设计为固定格式的,例如:{pv,一般为1}|{响应时间}|{ip},那么Reduce阶段的一个步骤就可以计算出来PV、UV和平均响应时间。举几个栗子:
例子1、排除.css,.js和.png后缀的请求之后,计算应用的PV,UV
Map阶段:
a、按照如下规则过滤: (row[keyMap.uri] =~ /.*\.css/) && (row[keyMap.uri] =~ /.*\.js/) && ((row[keyMap.uri] =~ /.*\.png/))
b、输出:pv|app|{扩展名字},1|20|{IP}
Reduce阶段:
a、累加得到PV,{IP}放入Map,Map的size即为UV
例子2、排除.css,.js和.png后缀的请求之后,计算各个HTTP Status Code的PV
Map阶段:
a、按照如下规则过滤: (row[keyMap.uri] =~ /.*\.css/) && (row[keyMap.uri] =~ /.*\.js/) && ((row[keyMap.uri] =~ /.*\.png/))
b、输出:pv|app|row[keyMap.status],1|20|{IP}。其中row[keyMap.status]是用于动态地从一行日志数据中取值的Aviator脚本
Reduce阶段:
a、累加得到PV,{IP}放入Map,Map的size即为UV
基于以上的设计,再加几个配套的数据库表,就可以实现一个MR计算n种规则的PV、UV和平均响应时间了。
P.S. 有兴趣的话,可以琢磨一下平均响应时间如何计算 :D
java统计 pv uv_统计PV、UV的新武器——Aviator相关推荐
- java统计 pv uv_统计网址的pv,uv(附带Spring定时器)
之前做了一个统计商铺的PV,UV值 大体思路:每天将用户的访问信息放到明细表里,然后在第二天的凌晨将这些数据归总 PVUV表 4个字段:主键pk 用户IP(customer_ip) 访问时 ...
- java利用友盟 计算pv uv_通过nginx日志利用shell统计日pv和uv
通过nginx日志利用shell统计日pv和uv 网上记录nginx日志统计访问量的脚本的文档很多,但是看来看去实际都是一个东西,如下: 1.根据访问IP统计UV awk '{print $1}' ...
- java pv实现_java实现UV.PV.IP统计的实现源码包
[实例简介] 统计网址的pv,uv,java如何实现数据统计,网站统计源码工程包 [实例截图] [核心代码] statistic └── statistic ├── src │ ├── appli ...
- 网站的PV、UV、的统计 (awk 统计命令)
一.awk的累加统计 方法一: # awk '{IP[$1]++}END{for( i in IP ) print i,IP[i]}' access.log |awk '{sum=sum + $2}E ...
- 有关“数据统计”的一些概念 -- PV UV VV IP跳出率等
有关"数据统计"的一些概念 -- PV UV VV IP跳出率等 1. 什么是展现量.点击量.点击率 在百度推广后台可以看到消费.平均价格.点击.展现.点击率.千次展现费用等数据, ...
- Vue+百度统计 实现网页的PV和UV统计
目录 什么是PV和UV? 百度统计 VUE 验证安装 查看统计 拓展 什么是PV和UV? 这里我懒得打字了,直接百度扒过来吧,这个了解知道是啥就行 百度统计 首先你要有个百度账号,自己测试的时候可以用 ...
- 简单网站统计功能的实现 PV IP 真实访客数(UV)
主要统计三个数值,网站的pv 和ip 以及UV 真实访客数 因为有详细的统计记录,所以可以实现的功能还有很大的扩展!把tallydate使用内存表的话,速度就会更快了 需要用到二张表 CREATE T ...
- Flink-电商用户行为分析(网站总浏览量(PV)的统计)
数据 链接:https://pan.baidu.com/s/1InfWoNYUeV1KYyvFS1aXuA 提取码:z3p4 衡量网站流量一个最简单的指标,就是网站的页面浏览量(Page View,P ...
- pv java_网站流量UV是什么意思?什么是流量UV/PV/IP
雅虎统计基础数据定义 PV(访问量):即PageView,即页面浏览量或点击量,用户每次刷新即网络 雅虎统计基础数据定义 PV(访问量): 即Page View, 即页面浏览量或点击量,用户每次刷新即 ...
最新文章
- 自学成才翁_如何发挥自学成才的内在游戏
- Pandas简明教程:六、Pandas条件查询
- Spring MVC中的二三事
- 【PAT乙级】1053 住房空置率 (20 分)
- 查询已有链表的hashmap_源码分析系列1:HashMap源码分析(基于JDK1.8)
- torch.cat同时连接多个tensor
- Python re module的使用
- Node.js nodemn
- Oracle PL/SQL之NEXT_DAY - 取得下一个星期几所在的日期
- 【渝粤教育】国家开放大学2019年春季 2718动物生理基础 参考试题
- wex5中集成的mysql数据库 打开时一闪而过 报错
- vscode 更改中办发文_如何在Visual Studio代码或VSCode中更改集成终端
- 二本学院计算机专业的考研er如何顺利上岸?
- 辅音字母组合功能音中的浊化现象
- TXT文件批量生成二维码
- 使用MATLAB调用ANSYS过程中,使用如下命令 !D:\Program Files\ANSYS Inc\v150\ansys\bin\winx64\ANSYS150 -b -p ane3f
- MacOS 更新系统或XCode终端Git报错
- 带附件/密送/抄送的 javaMail 邮件发送 -- java_demo(两种实现方式)
- 怎么让俩张图片在一行_壁纸文案 | 我们俩不会道别
- mpu和嵌入式linux区别,嵌入式MCU与MPU的区分和MCU开发中的三个误区
热门文章
- 树莓派python3.7_[Linux] 树莓派编译python3.7.4
- MySQL-BETWEEN AND范围查询问题
- php的常量和变量,php的常量和变量
- xps数据怎么导出为txt_使用ExportAsFixedFormat方法将数据导出到PDF或XPS.docx
- kafka消息存储与partition副本原理(二)
- Python之 jinja2模板浅析
- nginx 错误502 upstream sent too big header while reading response header from upst
- python基础教程 pdf github_python基础教程之Jupyter导出PDF从入门到绝望(已解|python基础教程|python入门|python教程...
- kd树的根节点_kd树总结
- linux 查看目录挂载的ip,Linux挂载IPSAN和FCSAN操作,Linux挂载NFS文件系统