时序数据库 druid 简介 之技术点 统计估算算法

本文介绍了时序数据库Druid中用于基数和分位数估算的统计算法。通过对IP地址进行哈希和映射到bucket,利用位标记来估算独立IP数量,这种方法在允许一定误差的情况下节省内存。在Druid中,这些估算算法已被封装,用户可以方便地在任务定义时使用。文章还提及大数据处理招聘的要求和联系方式。
摘要由CSDN通过智能技术生成

在前边介绍时序数据的时候, 我们可能经常会遇到计算基数(Cardinality) 和分位数 (Quantile)。 基数我们可以理解为 count distinct。比如计算页面访问的独立ip, 分位数我们举个我们最常用的第99百分位数例子, 假设我说中国人寿命的第99百分位数是101岁, 这个表示, 99%的中国人的寿命不会超过101岁。


我们看看基数怎么计算。 假设我们要统计独立ip, 则我们需要一行行读入访问日志, 找到对端ip, 然后在内存里建一个map或者set, 测试这个ip是否已经存在, 如果不存在则插入。 最后统计map或者set的元素。 这个方法虽然很准确, 但是要消耗大量的内存。 其实在现实应用中, 这个数据往往允许一定范围的误差, 所以我们可以用统计方法来计算这个基数。 思路如下,首先我们把ip地址用一个哈希函数均匀的分散到 一个很大的范围上, 然后再把哈希后的值映射到一组(比如1k个)bucket中。 每个bucket只需要一个bit表示。 如果有数据映射到这个bucket 则标记为1 否则标记为0.  现在假设访问请求都是特定的几个ip产生的, 则在我们的bucket中, 大量bit都是0. 如果访问请求来自众多的不同的ip, 则大量bit位被置1. 所以通过被置1的bit的多少就能估算出独立ip的数量。 

上面我只介绍一个基本原理, 详细的算法请自行翻看论文。


在时序数据处理中, 类似上面这种估算算法被大量使用,一般

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值