Skip to content

Lobshunter86/singleWordFinder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

singleWordFinder

执行流程

  • 用 file.Readat 在原始文件中根据 chunkSize 和 '\n' 找到分割点,将文件从逻辑上划分为若干个部分

  • 依次调用 mapper 读取原始文件块,此时文件块足够小,可以完整读入内存,将不重复的单词和对应的偏移量写入临时文件中

  • 依次调用 reducer 读取临时文件,默认 nreducer = nmapper,即使所有单词均为重复,依然可以完整读入内存, 返回该文件中偏移量最小的,唯一的单词

  • FindUnique 选出 reducer 里符合要求的单词,并清除临时文件

测试

  • 用 genSample.py 生成单词文件
  1. docker 限制内存
  2. 用另一种方式找出符合要求的单词,并对比结果

不足

  • mapper 中可选用更快的哈希函数
  • 用于测试的代码过于简陋
  • 更好的 CLI,目前少量参数是从 CLI 读取,其余是通过 const 常量修改
  • ...

MISC

  • 先将原始文件做逻辑分块是想让代码结构更流畅一些,io 开销很小
  • mapper 里用哈希而不是单词首字母是为了让临时文件大小均匀,但这样计算开销大些,或者可以将 reducer 改动一下处理临时文件过大问题

About

find first unique word in huge file by map reduce

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published