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