1.知识点
- scala输入输出样例类
- keyBy并行度为1计算UV的技巧
map(data => ("uv", data.userId))..keyBy(_._1)
-
keyBy并行度>1计算UV的技巧
自定义MapFunction,随机自定义key+"uv"
Random.nextString(10) + "uv"
-
WindowedStream.trigger的使用
trigger触发器,每来一条数据直接清空窗口,放到redis进行计算
- trigger返回WindowedStream,继续调用process(ProcessWindowFunction)
-
WindowedStream.process()的使用
windowStream调用接口
-
- 布隆过滤器的实现
2.业务目标
滚动输出最近1小时内的PV
窗口:1小时
指标:点击量
3.流程心法
总流程:创建输入输出类--->执行环境--->transform转换--->各类窗口函数的调用
主Object:
1.创建执行环境,设置时间语义,并行度等
2.transform api map转换为输入样例类,并设置watermark
3.key 定义成常量"v",那么keyBy就分为同一组,如果并行则可以自定义mapFunction
4.实现trigger
5.实现processWindowFunction