海量数据处理常用方法

BitSet位图

  1. BitSet原理BitSet位图类实现了一个按需增长的位向量,每一位值只有0或1,可以用1位来表示一个数据是否出现过,0为没有出现过,1表示出现过;内部维护了一个long数组,初始只有一个long,所以BitSet最小的size是64,当随着存储的元素越来越多,BitSet内部会动态扩充,最终内部是由N个long来存储。
  2. 常见的应用是那些需要对海量数据进行一些统计工作的时候,比如日志分析等;一个1G的空间有 8102410241024=8.5810^9bit,也就是可以表示85亿个不同的数
  3. 问题1:现在有1千万个随机数,随机数的范围在1到1亿之间。将1到1亿之间没有在随机数中的数求出来;问题2:两个10G文本, 里边是1-1亿的数字,怎么找出一个里边没有的3个数?答案:如果有足够的内存的话可以用位图法,即开一个1亿位的bitset,内存为100m/8== 12.5m, 然后如果一个数有出现,对应的bitset上标记为1,最后统计bitset上为0的即可。