700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > atguigu@网站独立访客数UV统计及市场推广统计案例Coding

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

时间:2020-02-08 18:36:40

相关推荐

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值可以通过窗口函数封装成自己想要的实体类

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。