Hi,
如果是Long类型uv,可以尝试使用 RoaringBitMap做精确去重,参考[1]
[1]
https://mp.weixin.qq.com/s/jV0XmFxXFnzbg7kcKiiDbABest,
Yichao Yang
------------------ 原始邮件 ------------------
发件人: "user-zh" <
[hidden email]>;
发送时间: 2020年8月27日(星期四) 晚上9:26
收件人: "user-zh"<
[hidden email]>;
主题: Re: 求助:实时计算累计UV时,为什么使用MapState和BloomFilter,在checkpoint时的状态大小没有差异
Hi
Checkpoint 的 size 取决于 state 的大小(如果是 RocksDBStateBackend + 增量
checkpoint,界面看到的 Checkpointed Data Size 是增量大小[1])。如果你把 BloomFilter 存到 State
中的话,那么需要看看最终在 State 中存储的内容大小。
如果有疑问的话,可以分析一下分别使用 bloomfilter 和 mapstate,在相同的数据更新后,state 中的数据分别有多少
[1]
https://ci.apache.org/projects/flink/flink-docs-release-1.11/zh/ops/state/state_backends.html#%E5%A2%9E%E9%87%8F%E5%BF%AB%E7%85%A7Best,
Congxian
x <
[hidden email]> 于2020年8月27日周四 下午1:48写道:
>
> 实时计算累计UV时,为什么使用MapState的方式和使用BloomFilter的方式,checkpoint时的状态大小没有差异,感觉bloom应该会比MapState小很多才对啊