对海量数据去重方法,spark,flink,mr通用

本文讲述了数据工程师小强在处理海量数据去重时遇到的问题,从优化SQL、借助外部存储到使用Bitmap方法,探讨各种方法的优缺点。文章强调在大数据场景下,通过最大化并行化、重复利用和数据均衡来提高计算效率,推荐使用分桶预聚合的优化方法,该方法适用于Spark、Flink等分布式计算框架。
摘要由CSDN通过智能技术生成

前言

小强作为一名数据工程师,给予hadoop生态,经常会接到类似uv的去重统计。对于这种需求,一般的数据工程师撸起袖子直接干!一般情况下不会有问题。某一天,你公司突然业务发展发展起来,数据量慢慢暴涨,你会突然发现之前的count distinct去重经常oom或是龟速出数据。上来一股脑加内存!加!果断加!某一天你老板要你在原来按天的uv加一个月uv、年uv,这时你慌了。只会说“老板!加机器,内存不够!”。老板说:“算个uv你就想骗我钱?你明天不用来上班了!”

​ 打不死的小强这时拼命百度,在网上找到许多神乎其神的方法…

常用方法

  • 优化sql
    小强把原有的count distinct去重改成了group by,性能也提升了不少。安稳的日子过了一段后,公司数据量也一点一点增长,小强上来一把hive SQL,成功扛住
select count(*) from (select uid,pid as upv from table_event group by uid,pid) tmp

老板突然说要在某某维度下,加个upv统计,xxx的统计,指标不断增加,这时,小强的sql不得不改变

select collect_set(uid) as uv,collect_set(uid,pid) as upv from table_event group by xxx,xx,x

小强一执行,直接oom,于是,加内存,加内存&#

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值