大数据优化之去重

Posted MISAYAONE

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据优化之去重相关的知识,希望对你有一定的参考价值。

如何在 1 秒内做到大数据精准去重?_Kyligence-CSDN博客_大数据去重算法

HLL + bitmap 两种主流优化方法。

相同点:以非常紧凑的结构存储去重集合的特征(或完整集合)

HLL、Bitmap

空间:

HyperLogLog 空间复杂度log(log(n))  故称 HLL ,64KB 基本上满足所有场景

每一个不同的 id 用一个 bit 位表示,所以它存储的集合越大,所占用空间也越大(1亿需要12M 左右)

工程适用性:

HLL 支持各种数据类型作为输入,使用方便

Bitmap 只支持 int/long 类型的数字作为输入,因此如果原始值是 string 等类型的话,用户需要自己提前进行到 int/long 的映射(构建维度字典)。

精确性:

HLL 采用了哈希函数,将输入值映射成一个二进制字节,然后对这个二进制字节进行分桶以及再判断其首个1出现的最后位置,来估计目前桶中有多少个不同的值。由于使用了哈希函数,以及使用概率估计的方式,因此 HLL 算法的结果理论误差超过了 1%

Bitmap 的结果是精确的。

数据量大,且业务对数据准确性比较敏感的话,还是需要精确去重的。

kylin 中还有 roaring map 对 bitmap 占用的空间进一步减少。

以上是关于大数据优化之去重的主要内容,如果未能解决你的问题,请参考以下文章

SQL 基础之去重和显示表结构

Python第19课:数据清洗之去错、去空、去重

爬完数据存哪里?当然是数据库啊!数据入库之去重与数据库详解!

java之去重方式,以及效率问题

C#黔驴技巧之去重(Distinct)

lodash源码分析之去重--uniq方法