海量数据统计出现次数

分两种情况,

1) 如果数据能够在内存中放下,比如如果海量数据是ip地址,最多有4G个ip地址,每个ip地址占4个字节 需要内存16G,如果内存在几十G,则完全可以全部装入内存,直接读取大文件,然后创建一个hash表,统计次数,最后再用堆统计最大的n个

2) 如果不能在内存放下,比如海量数据是字符串,不同的字符串个数无限,内存中可能存不下,那么需要先将海量数据进行分堆,按照hash值进行分堆,分成适宜在内存中操作的小文件,比如内存1G,字符串有20G,那么就分成20个以上的小文件

为什么要用hash分堆,这样是为了保证同一个字符串只会出现在同一个文件

posted @ 2016-08-10 15:55  立超的专栏  阅读(990)  评论(0编辑  收藏  举报