-
用 file.Readat 在原始文件中根据 chunkSize 和
'\n'
找到分割点,将文件从逻辑上划分为若干个部分 -
依次调用 mapper 读取原始文件块,此时文件块足够小,可以完整读入内存,将不重复的单词和对应的偏移量写入临时文件中
-
依次调用 reducer 读取临时文件,默认
nreducer
=nmapper
,即使所有单词均为重复,依然可以完整读入内存, 返回该文件中偏移量最小的,唯一的单词 -
FindUnique 选出 reducer 里符合要求的单词,并清除临时文件
- 用 genSample.py 生成单词文件
- docker 限制内存
- 用另一种方式找出符合要求的单词,并对比结果
- mapper 中可选用更快的哈希函数
- 用于测试的代码过于简陋
- 更好的 CLI,目前少量参数是从 CLI 读取,其余是通过 const 常量修改
- ...
- 先将原始文件做逻辑分块是想让代码结构更流畅一些,io 开销很小
- mapper 里用哈希而不是单词首字母是为了让临时文件大小均匀,但这样计算开销大些,或者可以将 reducer 改动一下处理临时文件过大问题