我最近开始研究MapReduce/Hadoop框架,想知道我的问题是否真的适合这个框架。
考虑一下这个。考虑一个示例,其中我有一大组输入文本文件,另外,作为输入,我想要接受一大组关键字(例如,包含在一个文件中)。对于每个关键字,我希望在每个文本文件中进行搜索,并报告该关键字在该文件中的实例数量。我会为每个关键字,为每个文本文件重复这一点。
这个场景与我在网上看到的示例略有不同,因为我不仅希望将要搜索的文本文档作为输入,还希望将关键字作为输入进行搜索。这意味着每个Map任务可能在同一个输入文本文件上处理多次(每个关键字一次)。
这样的问题适用于MapReduce框架吗?
发布于 2011-11-07 22:07:19
上面提到的场景绝对适合MapReduce框架。
要搜索的关键字不必是map函数的输入参数。有两种选择。
可以将包含关键字的文件放入HDFS并使用HDFS API.
所有的初始化,比如在HDFS中读取文件,都可以在o.a.h.mapreduce.mapper#setup()函数中完成。
一旦在映射器中获得关键字列表,就可以在输入文件中搜索它们并发出计数。
可能会有一些更好的文本处理算法。查看使用MapReduce进行文本处理的Data-Intensive Text Processing with MapReduce书籍。
要考虑的一件事是,如果数据很小,那么使用Hadoop比使用Shell脚本的开销要大。对于大数据,使用Hadoop是一种优势。
https://stackoverflow.com/questions/8036898
复制相似问题