druid.io 精确去重【转载】

转载
作者:邓钫元 快手大数据
地址:https://mp.weixin.qq.com/s/jDW1sordtki-O5-tsVE94g


  • BitMap

一个int(32bit),无符号数的范围是:[0, 4294967295] (42亿多,即[0, 2^32 - 1])

count distinct()的每一个distinct值用1 bit存储,那么最大就是: (2 ^ 32 / 8 bytes = 512MB),即最终结果是要用 512MB 的

  • Roaring BitMap

https://github.com/RoaringBitmap/RoaringBitmap

  • Trie

Trie 树模型主要是使用字符串做编码;可将不同类型数据统一转换成字符串类型,再使用 Trie 树模型做编码

超高基数,则 Trie 树 超大,需要分裂; 内存存不了,就要用磁盘,把分裂的树分范围,这样查询可以特定范围的子树,然后可以采用LRU策略来换入换出子树

  • 全局字典构造:分布式锁控制

  • druid 精确去重的pr

https://github.com/apache/druid/pull/7594/files

你可能感兴趣的:(#,druid.io)