首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MapReduce地图任务共享输入数据

MapReduce地图任务共享输入数据
EN

Stack Overflow用户
提问于 2011-11-07 21:05:53
回答 1查看 1.4K关注 0票数 2

我最近开始研究MapReduce/Hadoop框架,想知道我的问题是否真的适合这个框架。

考虑一下这个。考虑一个示例,其中我有一大组输入文本文件,另外,作为输入,我想要接受一大组关键字(例如,包含在一个文件中)。对于每个关键字,我希望在每个文本文件中进行搜索,并报告该关键字在该文件中的实例数量。我会为每个关键字,为每个文本文件重复这一点。

这个场景与我在网上看到的示例略有不同,因为我不仅希望将要搜索的文本文档作为输入,还希望将关键字作为输入进行搜索。这意味着每个Map任务可能在同一个输入文本文件上处理多次(每个关键字一次)。

这样的问题适用于MapReduce框架吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-07 22:07:19

上面提到的场景绝对适合MapReduce框架。

要搜索的关键字不必是map函数的输入参数。有两种选择。

可以将包含关键字的文件放入HDFS并使用HDFS API.

  • DistributedCache读入
  1. ,也可以将其视为跨映射器共享同一文件。

所有的初始化,比如在HDFS中读取文件,都可以在o.a.h.mapreduce.mapper#setup()函数中完成。

一旦在映射器中获得关键字列表,就可以在输入文件中搜索它们并发出计数。

可能会有一些更好的文本处理算法。查看使用MapReduce进行文本处理的Data-Intensive Text Processing with MapReduce书籍。

要考虑的一件事是,如果数据很小,那么使用Hadoop比使用Shell脚本的开销要大。对于大数据,使用Hadoop是一种优势。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8036898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档