首页   快速返回

java版hyperLogLog     所属分类 architecture
概率数据结构 
Probabilistic
基数 cardinality
不重复元素统计 譬如 网站UV 统计 

Cardinality Estimation 

一个 HyperLogLog 只需要花费12KB内存,就可以近似计算 近2^64个不同元素的基数,错误率在1.625%


       <dependency>
            <groupId>net.agkn</groupId>
            <artifactId>hll</artifactId>
            <version>1.6.0</version>
        </dependency>


import net.agkn.hll.HLL;

public class HLLTest {
	
	public static void main(String[] args) throws Exception {
		
		System.out.println("hello,hyperloglog");
		
		//number of bucket and bits per bucket
		HLL hll = new HLL(16, 8); 
		
		for(int i=0;i<100;i++){
			hll.addRaw(i);
		}
		System.out.println(hll.cardinality());
		
		for(int i=0;i<100000;i++){
			hll.addRaw(i);
		}
		System.out.println(hll.cardinality());
		
        hll = new HLL(20, 8); 
		
		for(int i=0;i<100000;i++){
			hll.addRaw(i);
		}
		System.out.println(hll.cardinality());
		
		
        hll = new HLL(30, 8); 
		
		for(int i=0;i<100000;i++){
			hll.addRaw(i);
		}
		System.out.println(hll.cardinality());
	
	}
}

上一篇     下一篇
git合并处理

数据结构要点

hive四种存储格式

磁盘io与直接io

Linux IO sync fsync与fdatasync

sendfile 零拷贝机制