大数据优化之去重

本文探讨了大数据去重的挑战,提出了软方法——分桶策略,通过先分桶再聚合的方式避免单点压力。介绍了HLL和Bitmap两种主流优化方法,HLL适用于近似去重,空间复杂度较低,而Bitmap提供精确去重但需处理数据类型的映射。在特定场景下,如对数据准确性要求高时,Bitmap可能是更好的选择。此外,还提到了Roaring Bitmap作为进一步优化位图占用空间的技术。
摘要由CSDN通过智能技术生成

除去这两种主流方法,其实还是要从思想上去解决单节点数据量过大的问题,软方法就是先分桶。

核心是两阶段聚合

分桶的方法有很多,比如去重场景下,可以先按照字符串的长度先将数据分桶,再在每个桶里计算 distinct,然后再 sum 一下结果就可以得到全局的 UV 。

亿万级海量数据去重软方法,spark/hive/flink/mr通用 | 航行学园

先求出 uid 的长度
create table event_tmp as select *,length(uid) as len_uid from event;

首先先对 uid 和 day两个字段进行 groupby (减轻单点压力)
再对中间结果求 sum即可。
select sum(uv_tmp) as uv 
from
  (
      select day_num,size(collect_set(uid)) as uv_tmp 
       from event_tmp 
       group by len_uid,day_num
  ) tmp group by day_num

(类似的还有求13亿人的收入前一万,可以先按照身份证号前6位分桶,再聚合一次)
两阶段聚合思想

海量数据高效去重的思想就是最大的把计算和数据并行化,充分利用、均衡利用分布式集群下的算力,避开单点压力,强去重的方法在小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MISAYAONE

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

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

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

打赏作者

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

抵扣说明:

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

余额充值