海量数据处理面试题 续一
海量数据处理面试题 续一
from:http://www.cnblogs.com/yuklin/archive/2011/12/10/2283062.html
1. 给你A,B两个文件,各存放50亿条URL,每条URL占用64字节,内存限制是4G,让你找出A,B文件共同的URL。
解法:
由于给的内存有限,我们无法将单个文件不加处理直接存放到内存中,所以第一步要预处理数据。
在题目中的数据是64字节的URL,也就是有64个char的字符串,考虑将每一个字符串进行模式提取,或者干脆压缩字符串,得到唯一标识。但这样的内存开销还是满足不了题目的要求。
或者使用Hash函数针对64个char的字符串进行处理,得到唯一hash值,然后放入位图中处理。
这个时候,由于内存是4G,可以创建的位图长度为34359738368大于100E,表明这种方法是可行的。
针对两个文件建立两个位图,然后做一个与运算就能得到共同的URL的Hash值,将其还原就可以了。
由于生成数据比较繁琐,这一道题就不编程实现了。