大数据优化之去重
除去這兩種主流方法,其實還是要從思想上去解決單節點數據量過大的問題,軟方法就是先分桶。
核心是兩階段聚合
分桶的方法有很多,比如去重場景下,可以先按照字符串的長度先將數據分桶,再在每個桶里計算 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位分桶,再聚合一次) 兩階段聚合思想海量數據高效去重的思想就是最大的把計算和數據并行化,充分利用、均衡利用分布式集群下的算力,避開單點壓力,強去重的方法在小數據量下會有優勢,
總結
- 上一篇: vue使用高德地图API,定位,搜索,拖
- 下一篇: 世界货币符号大全