0

我在这里阅读了有关 MapReduce的信息,他们给出的第一个示例是计算文档中每个单词的出现次数。我想知道,假设你想获得文档中出现频率最高的 20% 的单词,你怎么能做到这一点?这似乎不自然,因为集群中的每个节点都看不到整个文件,只能看到单个单词所有出现的列表。有没有办法做到这一点?

4

1 回答 1

0

是的,您当然可以做到这一点:通过强制 hadoop 只有一个 reducer(尽管使用这种方法,您会失去分布式计算本身的优势)。

这可以按如下方式完成:

// Configuring mapred to have just one reducer
conf.setInt("mapred.tasktracker.reduce.tasks.maximum", 1);
conf.setInt("mapred.reduce.tasks", 1);

现在,由于您只有一个减速器,您可以跟踪前 20% 并将它们排放到run()减速器cleanup()中。请参阅此处了解更多信息。

于 2013-03-01T19:27:44.533 回答