Bitmap索引在数据库和搜索引擎里使用的很广泛,
BitMap使用bit位,来标记元素对应的Value, 而Key即是该元素
Bitmap索引一般用来存储整数。整数的范围是0~2^32-1
bitmap算法- 精确去重算法主要通过BitMap来实现,它本质上是定义了一个很大的 bit 数组,每个元素对应到 bit 数组的其中一位
01.BitMap 运营分析-任意两天的重叠活跃用户
对不同日期活跃用户ID进行bitmap编码和计算的
获取过去1天的日活跃用户bitmap和今天的bitmap,对它们做并集(Union),and等操作
Bitmap和布隆过滤器(Bloom Filter)两个算法,对于空间的利用到达了一种极致
02.布隆过滤器就是引入了k(k>1) k(k>1)k(k>1)个相互独立的哈希函数,保证在给定的空间、误判率下,完成元素判重的过程,适合与比Bitmap更多量的数据 .stat()
DataFrameStatFunctions
bloomFilter 布隆过滤器
countMinSketch 算法Count-Min Sketch
corr : 计算the Pearson Correlation Coefficient of two columns of a DataFrame.
03. HyperLogLog算法经常在数据库中被用来统计某一字段的Distinct Value -- 在需要对数据进行去重计数的场景里
JavaRDDLike countApproxDistinct
def countApproxDistinct(relativeSD: Double): Long = rdd.countApproxDistinct(relativeSD)。
It must be greater than 0.000017.
统计是一个大约的统计,参数relativeSD控制统计的精确度。relativeSD越小,结果越准确
APPROX_COUNT_DISTINCT