Flink海量数据高效去重

声明:本系列博客为原创,最先发表在拉勾教育,其中一部分为免费阅读部分。被读者各种搬运至各大网站。所有其他的来源均为抄袭。

《2021年最新版大数据面试题全面开启更新》

 

     消除重复数据是实际业务中经常遇到的一类问题。在大数据领域,重复数据的删除有助于减少存储所需要的存储容量。而且在一些特定的业务场景中,重复数据是不可接受的,例如,精确统计网站一天的用户数量、在事实表中统计每天发送的快递包裹数据。在传统的离线计算中,可以直接用SQL通过DISTINCT函数,或者数据量继续增加时会用到类似MR的思想。那么在实时计算中,去重计数时一个增量和长期的过程,并且不同的场景下因为效率和精度问题方案也需要变化。

针对上述问题,Flink常见的去重方案:

  • 基于状态后端
  • 基于HyperLogLog
  • 基于布隆过滤器(BloomFilter)
  • 基于BitMap
  • 基于外部数据库

基于状态后端

     Flink状态后端的种类之一就是RocksDBStateBackend。他会将正在运行中的状态数据保存在RocksDB数据库中,该数据库默认将数据存储在TaskManager运行节点的数据目录下。
     RocksDB是一个K-V数据库,可以利用MapState进行去重。模拟一个场景,计算每个商品SKU的访问量。
整体代码如下:

public class MapStateDistinctFunction extends KeyedProcessFunction<S
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王知无(import_bigdata)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值