Apache Hadoop MapReduce Reducer类小解
2019-03-13 21:59
78 查看
1.ReduceTask
同mapper阶段类似,reduce阶段处理一个个reducetask,只不过mapper阶段mapper的map处理的是每一个切片的按行读取的数据。而reducetask的reduce处理的是每一个分区中每组数据的聚合汇总。
2.Reducer类
同样执行一个reducetask会调用一次run方法,而run方法则会调用
setup,
reduce和
cleanup方法。其中setup和cleanup方法在此同样没有方法体代码。
setup方法(每一个分区中进行扥组汇总前调用一次,分区维度的)
protected void setup(Reducer<KEYIN, VALUEIN, KEYOUT, VALUEOUT>.Context context) throws IOException, InterruptedException { }
cleanup方法(同样是分区维度的调用,每一个分区内数据汇总完毕后才会调用一次)
protected void cleanup(Reducer<KEYIN, VALUEIN, KEYOUT, VALUEOUT>.Context context) throws IOException, InterruptedException { }
reduce方法
protected void reduce(KEYIN key, Iterable<VALUEIN> values, Reducer<KEYIN, VALUEIN, KEYOUT, VALUEOUT>.Context context) throws IOException, InterruptedException { Iterator var4 = values.iterator(); // 获取当前组中value的迭代器对象 while(var4.hasNext()) { VALUEIN value = var4.next(); context.write(key, value); } }
由于reduce方法的调用频率是每组调用一次,所以reduce方法的key对应的是mapper阶段的key,而value则是每一个分区内该key的所有value值的一个迭代器。
而且,一般是Mapper的key类型和值的类型作为Reducer的输入key类型和输入value类型。而reduce的输出key和value的类型的话,通常是按照需求设计而定。
相关文章推荐
- linux下安装apache
- windows apache+tomcat整合及apache转发URL
- 关于mod_jk整合apache+tomcat中问题求大神详解
- [性能工具] Apache ab和Webbench
- Apache - 模块 - mod_rewrite - RewriteCond - 通过检查HTTP_REFERER避免静态图片盗链对性能有严重影响
- windows下apache+tomcat+php+mysql+zend
- Apache Commons CLI命令行启动
- wamp配置https apache配置https apache2.4.9
- 【安全】Apache Tomcat CVE-2017-12617 put请求漏洞修复方案
- apache开启.htaccess
- apache和tomcat有什么不同,为什么要整合apache 和tomcat?
- Off-heap Memory in Apache Flink and the curious JIT compiler
- 源码编译apache,让它支持ssl
- apache的ab压力测试工具
- windows下apache配置多个站点
- Apache的一些安全设置
- 关于org.apache.jasper.JasperException: Unable to compile class for JSP问题的解决
- Linux下的apache服务
- 关于Tomcat安装Apache Portable Runtime Utility Library 的问题
- apache 模块编译选项