如何在mapreduce程序(如mapper combiner)中使用本地聚合方法?

2izufjch  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(419)

我想实现一个字长程序,通过使用本地聚合方法将大型语料库中的单词分为4类,但我对这些方法的工作原理没有深入的了解。因为我是MapReduce领域的新手。例如,combiner和in-mapper combiner之间最大的区别是什么?另外,我应该在代码中添加一个组合器和in-mapper组合器,并测量它们之间的差异。但我不知道从哪里开始,如果有人帮助我,我会很感激的。

rpppsulh

rpppsulh1#

实现Map内组合器(如本文所述)是在Map范围内编写代码的过程 map() 存储多个键值对并在输出前执行某种聚合函数的方法。这与典型的 map() 一次只处理单个键值对的方法。这是相当危险的,因为开发人员需要非常小心地分配内存。
在Map组合器通常用于排名列表-即 ArrayList 用于存储 X 将得分最高的条目添加到Map器,并在所有键值对进入Map器后输出。显然,内存不足的风险很小(除非 X 或者键或值非常大),因此可以立即丢弃大量数据。
或者,常规合并器基本上是在map阶段结束后立即在同一节点上执行的还原器。其优点是开发人员不必担心实现自己的分组(与in-map combiner不同),因此内存问题的可能性较小。主要缺点是不能保证合路器运行。
常规的组合器经常用于计数之类的事情——带有组合器的wordcount(例如这是一个经典的例子)。
对于你的情况,我总是希望有一个正常的组合器。让它来完成你分类的所有工作,避免担心记忆问题。

相关问题