Advertisement

Flink deduplication strategy

阅读量:

Flink去重

去重计算作为数据分析业务中的一项常见指标处理方式,广泛应用于各类场景,例如统计网站单日的独立访客数量、广告的独立点击用户数等。离线计算通常采用全量数据一次性处理的方式,通过distinct函数实现去重操作;而实时计算则属于增量式、持续性的处理过程。在实际应用中,针对不同场景的需求,如数据规模的差异或对结果精确度的要求,可采取相应的解决方案。本文将围绕如何通过编码实现精确去重展开讨论,并以一个具体场景为例进行说明:统计每个广告每小时的独立点击用户数量。广告点击日志包含以下字段:广告位ID、用户设备ID(idfa/imei/cookie)以及点击时间。

接下来将介绍四种去重方法:

基于MapState的去重方式

利用SQL实现的去重方法

采用HyperLogLog算法进行去重

基于bitmap技术实现的精确去重

MapState去重机制设计

1.1 实现步骤分析

  1. 为确保当日数据具备可复现性,此处采用事件时间,即广告点击发生的具体时刻,作为划分每小时窗口周期的依据。
  2. 数据分组的依据为广告位标识符与点击事件所属的具体小时段。
  3. 选用processFunction进行实现,其中设置两个状态:一个用于存储相关数据,另一个用于记录对应的数据数量。
  4. 在计算任务完成后,需对数据进行清理操作,并根据时间

全部评论 (0)

还没有任何评论哟~