编程开发 购物 网址 游戏 小说 歌词 地图 快照 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 开发 租车 短信 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
移动开发 架构设计 编程语言 互联网 开发经验 Web前端 开发总结
开发杂谈 系统运维 研发管理 数据库 云 计 算 Java开发
VC(MFC) Delphi VB C++(C语言) C++ Builder 其它开发语言 云计算 Java开发 .Net开发 IOS开发 Android开发 PHP语言 JavaScript
ASP语言 HTML(CSS) HTML5 Apache MSSQL数据库 Oracle数据库 PowerBuilder Informatica 其它数据库 硬件及嵌入式开发 Linux开发资料
  编程开发知识库 -> 互联网 -> 基于窗口的实时统计 -> 正文阅读
 

[互联网]基于窗口的实时统计[第1页]

窗口统计
实时数据是无边界的,即不断地有数据输入,但我们的统计一般是有时间范围的,离线统计以年月日为统计周期,最小能到小时周期,如果是分钟甚至秒级别计算,则可认为是实时计算,我们把实时数据流按时间段分割成一个个窗口,则可基于窗口进行数据统计。

我司开源Pike支持三种窗口,结合各种UDAF,通过SQL就能能实现各种聚合统计:
跳动窗口 滑动窗口 累计窗口 跳动窗口
跳动窗口是最直观,最简单的接口,如下图,t1->t2为一个窗口,t2->t3为一个窗口,各个窗口之间没有重叠,实时统计结果也是基于各个窗口内的数据,结果输出频率等于统计周期。
跳动窗口比较常用,一般适用于统计无交叉分钟级别实时流量。

pike example:

 //以5m为输出频率,统计客户端每5分钟各视频播放uv,并按uv排序,获取uv最高的top 100视频
 withperiod 5m 
 select  top 100 output(dt(outputctx())) as dt,
 output('pc客户端') as plt,
 mjoin(dim_channelid,'dim_sync_channel','Series_TitleChinese') as title,
 count(distinct userid, ipvalue) as UV
 from dol_client
 group by title
 order by uv desc

滑动窗口
滑动窗口相对跳动窗口稍复杂,主要在于相邻窗口间有重叠,如下图,t1->t3为窗口w1,t2->t4为窗口w2,w2与w1重叠t2->t3,此时w2相对w1滑动窗口为t1->t2,w1统计窗口为t1->t3, 统计窗口必须为滑动窗口的整数倍,即(t3-t1)%(t2-t1)=0。若统计窗口等于滑动窗口,则滑动窗口转化为跳动窗口,因此,可认为跳动窗口是滑动窗口的特例。
滑动窗口主要适用于统计最近m时间内数据,输出结果间隔为n, n <= m 且 m % n = 0。

pike example:

//以5分钟为输出频率,同时统计最近5分钟,最近10分钟,最近4小时网页端点直播uv和vv
withperiod 5m
select output(dt(outputctx())) as dt,
'ikan' as plt,
case when Dim_LiveOndemand_C=102 then '点播' else '直播' end as type,
count(distinct userid,ipvalue) as uv_5m,
count(distinct userid,ipvalue,channelid) as vv_5m,
move('10m',count(distinct userid,ipvalue)) as uv_10m,
move('10m',count(distinct userid,ipvalue,channelid)) as vv_10m,
move('4h',linearcount(10000000,userid,ipvalue)) as uv_4h,
move('4h',linearcountEx(100,userid,ipvalue,channelid)) as vv_4h,
from dol_ikan
group by plt,type

累计窗口
累计窗口则是累计一个时间段内数据不断输出,例如w1为从t1开始累计到t2的数据,w2为从t1开始累计到t3的数据,w3为从t1开始累计到t4的数据,w1、w2、w3共享初始状态;在一个完整的累计周期内,完整累计周期必须为输出频率的整数倍,t1为初始状态,t2输出w1统计结果,t3输出w2统计结果,t4输出w3统计结果,t2-t1=t3-t2=t4-t3,(t3-t1)%(t2-t1)=0,(t4-t1)%(t2-t1)=0;下一个完整累计周期则清零为初始化状态重新开始统计,例如w6,w3都是一个完整累计窗口,且w6,w3无交集,w6,w3之间如同跳动窗口。
累计窗口主要适用于获取从整点或整天开始,累计到当前时间的统计数据,一般完整累计窗口与离线周期对应,但却需要获取当前时刻的实时统计数据,例如实时获取当天累计vv、当前小时累计uv。

pike examlpe:

//以5分钟为输出频率,实时统计移动端各视频当前小时uv、vv以及当天累计uv、vv
withperiod 5m 
select  output(dt(outputctx())) as dt,
channelid,
count(1) as LogCount,
count(distinct userid, ipvalue) as UV,
count(distinct if(StrIsNullOrEmpty(vvid), userid + channelid, vvid)) as VV,
accumulate('1h', count(1)) as LogCount_ThisHour,
accumulate('1h', linearcount(10000000, userid, ipvalue)) as UV_ThisHour
accumulate('1h', linearcountEx(100, if(StrIsNullOrEmpty(vvid), userid + channelid, vvid))) as VV_ThisHour,
accumulate('1d', count(1)) as LogCount_ThisDay,
accumulate('1d', hyperloglogcount(5, userid, ipvalue)) as UV_ThisDay,
accumulate('1d', loglogadaptivecount(5, if(StrIsNullOrEmpty(vvid), userid + channelid, vvid))) as VV_ThisDay
from dol_smart
group by channelid

阅读全文
版权声明:本文为博主原创文章,未经博主允许不得转载。
本文已收录于以下专栏:

发表评论
HTML/XML objective-c Delphi Ruby PHP C# C++ JavaScript Visual Basic Python Java CSS SQL 其它
相关文章推荐
基于Spark-Streaming滑动窗口实现——实时排名与统计
基于Spark-Streaming滑动窗口实现——实时排名与统计
kwu_ganymede 2016-02-05 13:06 2562 reduceByKeyAndWindow实现基于滑动窗口的热点搜索词实时统计(Java版本)
package gh.spark.SparkStreaming; import java.util.List; import org.apache.spark.SparkConf; im...
accptanggang 2016-11-08 13:43 1653

实时获得窗口句柄
2014-12-04 13:50 43KB 下载

C#实时窗口截图
2012-12-25 15:07 418KB 下载
浏览器窗口变化实时获取window当前大小
主要步骤是两步: 1、获取屏幕尺寸和浏览器文本区域的尺寸 通过window的内置属性(innerwidth和innerheight)、document的内置对象(documentElement和b...
liujiexiong11 2014-09-12 19:37 363 实时波形显示---带来的VC++中窗口重绘精析(WM_PAINT)
WHAT: 实时波形显示---带来的VC中窗口重绘精析(WM_PAINT) WHY: 开发了一个小测试程序, 程序的目的是用来实时采集通道信号, 显示采集数据, 实时波形显示, 存储数据. ...
lixincome 2012-01-01 22:58 1075 XNA 实时切换屏幕全屏、窗口
XNA按F键全屏和窗口的转换     转载自:http://blog.sina.com.cn/s/blog_49f452560100epa7.html #region Using ...
xuehuic 2012-02-15 11:53 1647 安卓中引入第三方架包butterKnife的操作方法以及使用Intent创建选择窗口和通过handler发消息实时更新textview中的时间
一:butterknife的引入及使用 annotation(注解)简介 注解是JDK5.0开始的新增特性。为代码添加一句特殊的"说明",添加了注解的代码会引起编译器的“格外重视” 系统提供了一些注解...
you__are_my_sunshine 2016-06-04 15:09 546

网页内嵌的聊天窗口(仿GoogleTalk),可作为在线实时客服窗口,开发语言asp+ajax
2010-05-04 16:20 29KB 下载

BCB6 TTabControl应用,主窗口实时显示当前子窗口情况,采用自定义消息
2016-03-17 14:00 436KB 下载
jinjiating +关注
原创 39 粉丝 24 喜欢 0 码云  
他的最新文章 更多文章
equals&hashCode count distinct是如何实现的 开源SQL on Storm解决方案Pike
在线课程

【免费】搜狗机器翻译技术分享
讲师:

深度学习在推荐领域的应用和实践
讲师:吴岸城
热门文章 Hive Failed
5538
局域网访问VMware中虚拟机
4588
理解Storm内部的消息缓冲区
3813
Hive权限介绍
3082
高效使用hive
2235
0
  互联网 最新文章
Stanford 英文词性标注(Part-of-speech)缩
基于窗口的实时统计
求解矩阵最短路径问题
SSL握手通信详解及linux下c/c++ SSL Socket
关于服务器上(Docker中)运行Java程序时区
python爬虫系列(六):强大的beautifulsou
[计算机网络笔记]第四部分——网络层 选路算
11.28 北京,念腾讯暑假,不思则惘吧!
web安全之
滑块验证码识别 java版本
上一篇文章      下一篇文章      查看所有文章
加:2017-10-29 21:57:41  更:2017-10-29 21:57:50 
VC(MFC) Delphi VB C++(C语言) C++ Builder 其它开发语言 云计算 Java开发 .Net开发 IOS开发 Android开发 PHP语言 JavaScript
ASP语言 HTML(CSS) HTML5 Apache MSSQL数据库 Oracle数据库 PowerBuilder Informatica 其它数据库 硬件及嵌入式开发 Linux开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年1日历
2018-1-23 23:57:06
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  编程开发知识库