在Apache Kylin中使用Count Distinct

Apache Kylin提供了近似和精准两种Count Distinct计算方式。近似方式基于HyperLogLog算法,适用于快速计算和节省存储空间,但存在误差。精准方式使用bitmap,保证无误但占用更多存储。全局字典解决跨Segment计数不准确的问题,但可能增加Build时间。性能优化可通过增大Mapper内存来改善。
摘要由CSDN通过智能技术生成

雷顿学院大数据:http://www.leidun.site/

在OLAP多维分析中,Count Distinct(去重计数)是一种非常常用的指标度量,比如一段时间内的UV、活跃用户数等等;
从1.5.3开始,Apache Kylin提供了两种Count Distinct计算方式,一种是近似的,一种是精确的,精确的Count Distinct指标在Build时候
会消耗更多的资源(内存和存储),Build的过程也比较慢;

近似Count Distinct

Apache Kylin使用HyperLogLog算法实现了近似Count Distinct,提供了错误率从9.75%到1.22%几种精度供选择;
算法计算后的Count Distinct指标,理论上,结果最大只有64KB,最低的错误率是1.22%;
这种实现方式用在需要快速计算、节省存储空间,并且能接受错误率的Count Distinct指标计算。

 

精准Count Distinct

从1.5.3版本开始,Kylin中实现了基于bitmap的精确Count Distinct计算方式。当数据类型为tiny int(byte)、small int(short)以及int,
会直接将数据值映射到bitmap中;当数据类型为long,string或者其他,则需要将数据值以字符串形式编码成dict(字典),再将字典ID映射到bitmap;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值