1g内存对10亿数据去重?
布隆过滤器
使用布隆过滤器过滤掉已经出现过的元素;
哈希表+外部存储
哈希表存储已经出现过的元素,将哈希表保存到磁盘上,当检查新元素是否存在,只需要查找哈希表即可;
外部排序
将数据分成适合内存大小的块来处理,然后在磁盘上执行排序和合并操作;
- 将大型数据集分成多个小块,每个块大小适合内存限制(1GB);
- 对每个小块内的数据进行排序,以便重复项相邻;
- 一次加载一个块到内存中,并与前一个块进行比较,识别和消除重复项;
- 将处理过的数据写入新文件或输出流;
- 重复步骤3和4,直到所有块都被处理,得到一个去重后的数据集;