Hadoop 还原前的MapReduce过滤器

Hadoop 还原前的MapReduce过滤器,hadoop,dictionary,mapreduce,reduce,Hadoop,Dictionary,Mapreduce,Reduce,我有一个Hadoop MapReduce作业,可以拆分不同类型的文档(地点、人员、组织、算法等)。对于每个文档,我都有一个标记,用于标识文档的类型和指向其他文档的链接,但是在任务到达链接页面之前,我不知道链接的文档是哪种类型 在映射阶段I中,标识当前页面的链接和类型,然后将链接信息和当前文档及其标记的值Emmit为单个减速机,键为null可写值“CurrentDoc::Type::Link” 在reducer阶段,它使用值的“CurrentDoc::type”按类型对所有文档进行分组,然后仅在属

我有一个Hadoop MapReduce作业,可以拆分不同类型的文档(地点、人员、组织、算法等)。对于每个文档,我都有一个标记,用于标识文档的类型和指向其他文档的链接,但是在任务到达链接页面之前,我不知道链接的文档是哪种类型

在映射阶段I中,标识当前页面的链接和类型,然后将链接信息和当前文档及其标记的值Emmit为单个减速机,键为null可写值“CurrentDoc::Type::Link”

在reducer阶段,它使用值的“CurrentDoc::type”按类型对所有文档进行分组,然后仅在属于某些类型的文档的“Document::Link”之间发出一个关系

然而,我有一个内存问题,因为所有的最后一步只在一个减速机中执行

这是一种在映射过程之后和reduce任务之前执行分组任务的方法,用于识别所有文档及其标记,然后将它们分发给不同的reducer

我的意思是将所有文档/标记分组为ArrayWritable文本中的“CurrentDoc::Type”。然后将“CurrentDoc::Link”元组作为键和ArrayWritable作为值发送给reducer,以并行方式在reduce阶段执行一些过滤


谢谢你的帮助

不幸的是,系统没有按您期望的方式工作

我们无法更改映射器、还原器和合并器功能

Hadoop允许用户指定要在映射输出上运行的组合器函数,组合器函数的输出形成reduce函数的输入。换言之,调用组合器函数零次、一次或多次应该可以从减速器产生相同的输出

组合器无法组合来自多个贴图的数据。让我们把工作交给他吧

对于你的问题

1) 使用客户分区器并决定应使用哪个减速机处理特定密钥(CurrentDoc::Type

2) 组合器将在映射器中将数据与进行组合

3) 映射器的输出将被重定向到一个特定的缩减器,具体取决于键分区(洗牌

4) Reducer将组合从各个映射器接收的密钥数据


分区器和组合器

是否使用组合器功能?看起来很适合这里。嗨@JackDaniel's,我读过关于组合器的书,问题是组合器只处理一个映射器的数据,不能处理所有映射器的数据,这就是我需要的。感谢您的评论,请尝试将“CurrentDoc::Link”作为键发送,将“CurrentDoc::Type”作为映射器本身的值发送。