欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

大数据优化之去重

时间:2023-04-17

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

核心是两阶段聚合

分桶的方法有很多,比如去重场景下,可以先按照字符串的长度先将数据分桶,再在每个桶里计算 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位分桶,再聚合一次)两阶段聚合思想

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

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。