【问题标题】:MapReduce - Emitting the top 20% occurring words in the documentMapReduce - 发出文档中出现频率最高的 20% 的单词
【发布时间】:2013-02-28 10:43:08
【问题描述】:

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

【问题讨论】:

    标签: mapreduce


    【解决方案1】:

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

    这可以按如下方式完成:

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

    现在由于您只有一个 reducer,您可以跟踪前 20% 并将它们发送到 reducer 的 run()cleanup() 中。请参阅here 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-01
      • 2013-12-20
      • 1970-01-01
      • 1970-01-01
      • 2019-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多