千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  应聘面试  >  大数据面试题  > Flink实时去重方案(UV计算)怎么做?

Flink实时去重方案(UV计算)怎么做?

来源:千锋教育
发布人:wjy
时间: 2022-09-02 15:42:05 1662104525

业务计算中,我们经常会遇到使用Flink实时计算UV的问题,比如计算一天的实时UV,或者每个小时的UV。

应为UV是需要去重的,再大数据量的情况下,如何使用Flink进行高效的UV统计呢#比如计算一天实时UV

Flink实时去重方案(UV计算)怎么做?

1. windowAll+HashSet大数据量不可行,因为要缓存一天数据,OOM问题随时会发生

2. keyBy+window+MapState+配置RocksDB转态存储可行,只是因为MapState每次都需要变量才能获取到总数据量大小,效率不高

3. keyBy+window+ValueState+BloomFilter+配置RocksDB转态存储,可行,BloomFilter的加入使得计算变得高效,但是BloomFliter有误判率,不能实现100%精确,但是一般的业务场景,对于实时UV也并非要求100%精确,因此这是一个不错的选择.(这里的BloomFilter也可以使用HyperLogLog数据结构,都有误判率)

4. 将数据存储到第三方系统,比如Redis或者HBase,之后再统计计算. 在Redis中存储可用使用bitmap数据结构,空间占用小。

也可以使用HyperLogLog数据结构`(每个 HyperLogLog 键只需要花费12 KB 内存,就可以计算接近2^64个不同元素的基数)`,不能保证精确,但是比bitmap数据结构占用空间更小。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT