MapReduce - 发出文档中前20%的单词

时间:2013-02-28 10:43:08

标签: mapreduce

我正在阅读有关MapReduce here的内容,他们给出的第一个示例是计算文档中每个单词的出现次数。我想知道,假设你想要在文档中得到前20%的单词,你怎么能实现呢?由于群集中的每个节点都看不到整个文件,只是单个单词的所有出现的列表,因此看起来不自然。 有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

是的,你当然可以做到这一点:通过强制hadoop只有一个减速器(虽然采用这种方法你会失去分布式计算本身的优势)。

这可以按如下方式完成:

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

既然你只有一个减速器,你可以跟踪前20%,并在减速器的run()cleanup()中发出它们。有关详情,请参阅here