我有1 TB的未排序字数(word:count),我想运行一个map reduce作业,该作业会选择数量最大的字。在这种情况下,我希望有一个在所有reduce作业中共享的变量,该作业将保存到目前为止具有最大单词数的单词。 reduce函数将仅检查此变量并在必要时对其进行更新。那可能吗?谢谢

最佳答案

你可以

  • 将 reducer 的数量设置为1
  • 向reducer类添加两个实例变量,一个用于计数,一个用于单词,以保存有关最常用单词的信息。
  • 在reduce setup()方法
  • 中初始化变量
    在reduce()方法中的
  • 检查当前单词是否出现的次数超过最频繁的日期,如果是,则将该单词存储并计数到变量

  • 在cleanup()方法中的
  • 中,您可以访问变量以使用最频繁的单词

  • 如果您需要运行多个reducer,则可以修改reducer的cleanup()方法,以将单词及其计数作为键值对写出到上下文中。与上面的原始缩减器类似的后续缩减器可以轻松找到出现次数最多的单词。

    10-01 07:54
    查看更多