海量数据处理常用思想及重要数据结构

1、大顶堆、小顶堆

特别适合topN问题,如求海量日志中最大的100个数。既然是海量数据,那么内存中一下子无法加载所有的数据集,此时可以先读取海量数据中的100个数,建立数据集为100的小顶堆(小顶堆的对顶比所有元素都小),然后依次往堆结构中读取数字,调整堆,使其保持小顶堆,最后得到top100的最大数。

2、hash映射进行分治,然后归并

hash映射按照数据特征把海量数据变的不海量,然后分别处理各段数据,再归并处理。例如:给定两个文件,各存放50亿个url,让你找出两个文件中共同的url,则可以根据url的特征,将两个文件分别映射到上千个小文件中,只要保证两个文件用的相同的hash映射方法,那么相同的url映射后一定在相同的小文件中,所以逐一比较各个小文件中的url,然后归并即可。

3、hash统计

以特征为key值利用hash表进行统计,比如,求一本书中26个字母出现的个数,可以以26个字母分别为key值,进行hash统计即可。

4、bloom filter

此方法存在一定的误差,但是比较高效。方法是利用多种不同的hash方法对数据集做hash运算,将对应的结果为key,值为1,然后判断一个新数在不在这个数据集中,则用相同的n中hash方法进行计算,如果全为1则认为在,任何一个不为1,则认为不在。

5、外排序

6、bitmap

7、多层划分

8、tire树

9、mapreduce

猜你喜欢

转载自www.cnblogs.com/bewolf/p/9352174.html