lzw 发表于 2013-11-30 15:35:14

Hadoop reducer类的阅读


在Hadoop的reducer类中,有3个主要的函数,分别是:setup,clearup,reduce。代码如下:/**
   * Called once at the start of the task.
   */
protected void setup(Context context
                     ) throws IOException, InterruptedException {
    // NOTHING
}

/**
   * This method is called once for each key. Most applications will define
   * their reduce class by overriding this method. The default implementation
   * is an identity function.
   */
@SuppressWarnings("unchecked")
protected void reduce(KEYIN key, Iterable<VALUEIN> values, Context context
                        ) throws IOException, InterruptedException {
    for(VALUEIN value: values) {
      context.write((KEYOUT) key, (VALUEOUT) value);
    }
}

/**
   * Called once at the end of the task.
   */
protected void cleanup(Context context
                         ) throws IOException, InterruptedException {
    // NOTHING
}

在用户的应用程序中调用到reducer时,会直接调用reducer里面的run函数,其代码如下:/*
   * control how the reduce task works.
   */
@SuppressWarnings("unchecked")
public void run(Context context) throws IOException, InterruptedException {
    setup(context);
    while (context.nextKey()) {
      reduce(context.getCurrentKey(), context.getValues(), context);
      // If a back up store is used, reset it
      ((ReduceContext.ValueIterator)
          (context.getValues().iterator())).resetBackupStore();
    }
    cleanup(context);
}
}

由上面的代码,我们可以了解到,当调用到reduce时,通常会先执行一个setup函数,最后会执行一个cleanup函数。而默认情况下,这两个函数的内容都是nothing。因此,当reduce不符合应用要求时,可以试着通过增加setup和cleanup的内容来满足应用的需求。
加入qq群(号码:39327136)http://pub.idqqimg.com/wpa/images/group.png,讨论云技术,获取最新资讯资源等

legend404 发表于 2014-5-19 10:01:20

不太懂谁能解释一下这些是干什么用的

admin 发表于 2014-5-19 12:28:04

legend404 发表于 2014-5-19 10:01
不太懂谁能解释一下这些是干什么用的
没有setup和cleanup是属于reduce的一般情况
带有setup和cleanup属于需求更多的情况
如同一般情况和特殊情况
setup和cleanup就是用来处理reduce的特殊情况和更高需求的

冥月幻影 发表于 2014-5-24 23:49:02

新人学习中

ascentzhen 发表于 2014-7-18 13:23:22

cleanup是不是可以用来比如说释放系统的资源啊?

跃阳紫 发表于 2014-7-28 20:26:18

初学者,还不懂{:soso_e115:}

pig2 发表于 2014-7-28 22:19:17

跃阳紫 发表于 2014-7-28 20:26
初学者,还不懂

可以看看这个:

mapreduce学习指导及疑难解惑汇总

跃阳紫 发表于 2014-7-29 08:55:04

pig2 发表于 2014-7-28 22:19
可以看看这个:

mapreduce学习指导及疑难解惑汇总

好的,谢谢,我刚接触Hadoop一周的时间,学习起来有点迷茫,还希望多多指导!

pig2 发表于 2014-7-29 10:44:01

跃阳紫 发表于 2014-7-29 08:55
好的,谢谢,我刚接触Hadoop一周的时间,学习起来有点迷茫,还希望多多指导!

初学可以参考这个:
云技术、大数据(hadoop)入门常见问题回答



零基础学习hadoop到上手工作线路指导(初级篇)


跃阳紫 发表于 2014-7-29 13:47:14

pig2 发表于 2014-7-29 10:44
初学可以参考这个:
云技术、大数据(hadoop)入门常见问题回答



非常感谢,我会好好研读
页: [1] 2 3
查看完整版本: Hadoop reducer类的阅读