海量数据处理方案
什么是海量数据? 正如《逍遥游》中的一句话:北冥有鱼,其名为鲲,鲲之大,一锅炖不下,化而为鸟,其名为鹏,鹏之大,需要两个烧烤架;简单的可以把这里的海量数据理解为这里的鲲鹏 ,数据大到一个服务器存不下,就需要两个甚至多个服务器来存储。而接下来我们需要做的就是用一台服务器来处理海量数据。 以下是一些海量数据处理的例子: 1. 给定一个大小超过 100G 的文件, 其中存在 IP 地址, 找到其中出现次数最多的 IP 地址(hash文件切分) 思路:显然100G大小的文件是不可能直接加载到内存中去处理的。所以我们需要对这个文件进行划分,前提是我们需要将相同的IP地址划分到同一空间。假设我们将文件分成1000份,那么一份的大小大概是100M,先将IP地址利用哈希算法求得一个整数key,再将index = key % 1000,得到的结果相同的放到同一文件中,这样就将相同的IP地址放到了同一个文件下。再对每一个文件分别进行处理,用count来记录出现的次数,最后利用排序算法对count进行排序找到最大的那个,即其对应的IP地址为出现次数最多的IP地址。 利用这种方法解决这个问题的关键在于我们在用哈希函数进行哈希切分后相同的IP地址一定会被分到同一个文件中。对于哈希切分,相同的key,得到的哈希值一定相同。 2.给定100亿个整数, 找到其中只出现一次的整数(位图变形, 用两位来表示次数).