retailer-ueba/NetworkFlowAnalysis
yudan.chen 91c4cabe91 p115 布隆过滤器解决占用大内存问题 2021-01-21 17:52:05 +08:00
..
src/main p115 布隆过滤器解决占用大内存问题 2021-01-21 17:52:05 +08:00
NetworkFlowAnalysis.iml p107 实时热门流量统计,DataStream实现 2021-01-19 13:57:31 +08:00
README.md p111 解决并行度和中间结果刷屏问题 2021-01-20 17:39:32 +08:00
pom.xml p115 布隆过滤器解决占用大内存问题 2021-01-21 17:52:05 +08:00

README.md

WindowFunction的参数如何确定

WindowFunction[IN, OUT, KEY, W <: Window] OUT输出是样例类类型 PageViewCount
KEY这个是看keyBy的结果的如果定义String类型的url那么取数据就像热门商品一样很麻烦 val itemId = key.asInstanceOf[Tuple1[Long]].f0 keyBy还有一个方法是自定义啥输出啥故定义成_.url输出是String这里就用String

KeyedProcessFunction的参数如何确定

同上keyBy用_.windowEndwindowEnd是啥第一个参数key就是啥是Long
输入 PageViewCount
输出 String

正则 ^((?!\.(css|js)).)*

?! 不以
.(css|js)$ 这两个扩展名结尾
^ 开头 *$ 任意结尾

HotPagesNetworkFlow 这个项目watermark定了1分钟到底定多少合适

看数据乱序程度把watermark和窗口延迟触发机制一起处理watermark设置小一点窗口多等一会 如果还有没处理完的数据,放到侧输出流

测试 HotPagesNetworkFlowWatermark

nc -lk 7777
83.149.9.216 - - 17/05/2015:10:25:49 +0000 GET /presentations 83.149.9.216 - - 17/05/2015:10:25:50 +0000 GET /presentations 这里watermark是49故没有窗口关闭 83.149.9.216 - - 17/05/2015:10:25:51 +0000 GET /presentations 输出聚合操作watermark是50加1才会触发定时器故没有排序信息输出 83.149.9.216 - - 17/05/2015:10:25:52 +0000 GET /presentations

测乱序数据:
83.149.9.216 - - 17/05/2015:10:25:46 +0000 GET /presentations 在之前的聚合窗口上叠加每来一个PageViewCount就会注册一个定时器过去的 数据不会更新watermarkwatermark对于过去的数据是不更新的故不会触发定时器

83.149.9.216 - - 17/05/2015:10:25:53 +0000 GET /presentations 更新了watermark故上面那条就可以生效了

测迟到数据:
83.149.9.216 - - 17/05/2015:10:25:31 +0000 GET /presentations 因定义了1分钟迟到数据故只要1分钟以内的都会输出故输出很多窗口聚合结果

扩展

83.149.9.216 - - 17/05/2015:10:25:23 +0000 GET /presentations
83.149.9.216 - - 17/05/2015:10:25:54 +0000 GET /presentations watermark是5350这个窗口关了 83.149.9.216 - - 17/05/2015:10:25:51 +0000 GET /presentations 输出到侧输出流

HotPagesNetworkFlowWatermark这个程序状态bug产生的原因

窗口结束时间2015-05-17 10:25:45.0
NO1: 页面URL = /presentations	热门度 = 2
NO2: 页面URL = /presentations	热门度 = 1

定时器里面只对windowEnd分组了没有对url分组迟到数据来一条会处理一条