GBase 8c V3.0.0数据类型——HLL数据类型

​​​​​HLL数据类型

HLL(Hyper Loglog)是一种用于统计数据集中唯一值个数的高效近似算法,具有计算速度快、节省空间的特点,不需要直接存储集合本身,而是存储HLL数据结构。每当有新数据合入统计时,只需要把数据经过哈希计算,并插入到HLL中,最后根据HLL就可以得到统计结果。

HLL与其他算法的比较,参见下表。

比较指标

Sort算法

Hash算法

HLL

时间复杂度

O(nlogn)

O(n)

O(n)

空间复杂度

O(n)

O(n)

log(logn)

误差率

0

0

≈0.8%

所需存储空间

原始数据大小

原始数据大小

默认规格下最大为16KB

由上表可知,HLL在计算速度和所占存储空间上都占优势。在时间复杂度上,Sort算法至少需要O(nlogn)的时间,Hash算法、HLL需要O(n)的时间就可以得出结果;在存储空间上,Sort算法和Hash算法都需要先把原始数据存起来再进行统计,会导致存储空间消耗巨大,而对HLL来说,不需要存原始数据,只需要维护HLL数据结构,故占用空间有很大的压缩。默认规格下HLL数据结构的最大空间约为16KB。

  1. 当前默认规格下,可计算最大distinct值的数量约为1.1e+15个,误差率为0.8%。需要注意的是,如果计算结果超过当前规格下distinct最大值,会导致计算结果误差率变大,或导致计算结果失败并报错。
  2. 用户在首次使用该特性时,应该对业务的distinct value做评估,选取适当的配置参数并做验证,以确保精度符合要求:
    1. 当前默认参数下,可以计算的distinct值为1.1e+15,如果计算得到的distinct值为NaN,需要调整log2m,或者采用其他算法计算distinct值。
    2. 虽然hash算法存在极低的hash collision概率,但是建议用户在首次使用时,选取2-3个hash seed验证,如果得到的distinct value相差不大,则可以从该组seed中任选一个作为hash seed。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值