atguigu@网站独立访客数UV统计及市场推广统计案例Coding

尚硅谷Java版Flink(武老师清华硕士,原IBM-CDL负责人) P116-P123

024.尚硅谷_Flink项目_市场推广统计(三)_不分渠道代码实现_哔哩哔哩_bilibili



1, 网站独立访客数UV的统计-基于set去重的简单实现

2, 网站独立访客数UV的统计-布隆过滤器

(1)布隆过滤器——概率性数据结构

位图bitmap,用0和1判断数据是否存在

特点是高效地插入和查询

“某样东西一定不存在或可能存在”

 

(2)自定义窗口触发器 extend Trigger

自定义Trigger需要实现的方法说明:

OnElement :每一个数据进入窗口都会触发。

OnEventTime :根据接入窗口的EventTime进行触发操作

OnProcessTime : 根据接入窗口的ProcessTime进行触发操作

Clear : 执行窗口及状态数据的清除方法。

 

窗口触发方法返回结果的类型:

CONTINUE : 不进行操作,等待。

FIRE : 触发计算且数据保留。

PRUGE : 窗口内部数据清除且不触发计算。

FIRE_AND_PURGE : 触发计算并清除对应的数据。

 

(3)自定义布隆过滤器 -- 主要用来计算offset

定义位图大小,一般需要定义位2的整次幂

实现一个hash函数

(4)process处理函数

-将位图bitmap存入redis,用windowEnd作key

-将窗口count计算的值存入redis,用“uv_count”作key,用hash结构-映射表,存多个窗口的数据

-getbit命令可以获取通过自定义布隆过滤器计算出来的offset在redis位图里对应的bit值

-根据以上命令的bit值确认是否有hash碰撞

-如果不存在则在对应位图位置置1,同时更新redis里保存的count值(频繁对redis里同一个key的hash结构数据进行更新读取操作)

3、虚拟机安装redis报错

make时报如下错误:

cd src && make install

make[1]: 进入目录“/opt/module/redis-3.2.8/src”

    CC adlist.o

In file included from adlist.c:34:0:

zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录

 #include <jemalloc/jemalloc.h>

                               ^

编译中断。

make[1]: *** [adlist.o] 错误 1

make[1]: 离开目录“/opt/module/redis-3.2.8/src”

make: *** [install] 错误 2

原因:jemalloc重载了Linux下的ANSI C的malloc和free函数。

解决办法:make时添加参数。

make MALLOC=libc

4、 APP市场推广统计-分渠道

-自定义数据源SimulatedMarketingBehaviorSource

-.keyBy("channel", "userBehavior")

组合key分组,注意分组后的数据是个二元组

-agg算子里可以实现ProcessWindowFunction的窗口函数

5、APP市场推广统计-全量,不分渠道

-通过sum求和返回的是二元组的类型

-通过agg计算count值可以通过窗口函数封装成自己想要的实体类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值