由散列表到BitMap的概念与应用(三):面试中的海量数据处理 | Aoho's Blog
在面试软件开发工程师时,经常会遇到海量数据排序和去重的面试题,特别是大数据岗位。
例1:给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,找出a、b文件共同的url?
- 首先我们最常想到的方法是读取文件a,建立哈希表,然后再读取文件b,遍历文件b中每个url,对于每个遍历,我们都执行查找hash表的操作,若hash表中搜索到了,则说明两文件共有,存入一个集合。
- 但上述方法有一个明显问题,加载一个文件的数据需要50亿*64bytes = 320G远远大于4G内存,何况我们还需要分配哈希表数据结构所使用的空间,所以不可能一次性把文件中所有数据构建一个整体的hash表。
Read full article from 由散列表到BitMap的概念与应用(三):面试中的海量数据处理 | Aoho's Blog
No comments:
Post a Comment