海量数据的处理

来源:互联网 发布:学生会网络技术部职责 编辑:程序博客网 时间:2024/05/15 05:55

对于一些处理数据类型的问题,可以利用Bit-map和双层桶法进行处理。

例:2.5亿个int数据中找出不重复的正整数的个数。(正整数的表示范围为:0-2^32-1)

我们可以使用Bit-map位图法来处理此类问题。使用2bit表示一个正整数出现0次、1次还是两次及以上,差不多占用512M内存。如果内存使用过大,可以采用双层桶法,将这2^32-1个数划分为2^8个区域(比如一个文件就是一个区域),然后将数据分离到不同的区域,在各个区域内对这些数据使用Bit-map方法。只要有足够的磁盘空间,就可以解决。

例:5亿个int数据统计中位数

采用双层桶法,将int值划分为2^16个区域,然后读取数据统计落在各个区域的数据的个数,这样我们就知道了中位数在哪个区域内,同时也知道了中位数是在这个区域内的第几大数。这样我们只需对这个区域内的数据进行处理即可。

对于一些非数据类型数据,比如网址、邮箱等,可以利用布隆过滤器法处理。

原创粉丝点击