MapReduce-发出文档中出现率最高的20%的单词

MapReduce-发出文档中出现率最高的20%的单词,mapreduce,Mapreduce,我读过关于MapReduce的文章,他们给出的第一个例子是计算文档中每个单词的出现次数。我想知道,假设您想获得文档中出现率最高的20%的单词,您如何实现这一点?这看起来很不自然,因为集群中的每个节点都看不到整个文件,只看到单个单词的所有出现的列表。 有没有办法做到这一点?是的,您当然可以做到这一点:通过强制hadoop只使用一个reducer(尽管使用这种方法会失去分布式计算本身的优势) 这可以通过以下方式完成: // Configuring mapred to have just one re

我读过关于MapReduce的文章,他们给出的第一个例子是计算文档中每个单词的出现次数。我想知道,假设您想获得文档中出现率最高的20%的单词,您如何实现这一点?这看起来很不自然,因为集群中的每个节点都看不到整个文件,只看到单个单词的所有出现的列表。
有没有办法做到这一点?

是的,您当然可以做到这一点:通过强制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()
中发出它们。更多信息,请参阅