大数据学习记录(day5)-Hadoop之Mapper类和Reducer类代码学习
来源:互联网 发布:mysql mac dmg 下载 编辑:程序博客网 时间:2024/06/06 04:13
学习来源:http://www.aboutyun.com/thread-5597-1-1.html
http://www.aboutyun.com/thread-5598-1-1.html
说明:由于参考资料大多是2013年以前的,所以有些说法也许并不成立,请读者选择性吸收。
今天继续来读代码,关于Hadoop之Mapper类和Reducer类。
一、Mapper类。
在Hadoop的mapper类中,有4个主要的函数,分别是:setup,clearup,map,run。代码如下:
protected void setup(Context context) throws IOException, InterruptedException {// NOTHING}protected void map(KEYIN key, VALUEIN value, Context context) throws IOException, InterruptedException {context.write((KEYOUT) key, (VALUEOUT) value);}protected void cleanup(Context context) throws IOException, InterruptedException {// NOTHING}public void run(Context context) throws IOException, InterruptedException { setup(context); while (context.nextKeyValue()) { map(context.getCurrentKey(), context.getCurrentValue(), context); } cleanup(context); }}
由上面的代码,我们可以了解到,当调用到map时,通常会先执行一个setup函数,最后会执行一个cleanup函数。而默认情况下,这两个函数的内容都是nothing。因此,当map方法不符合应用要求时,可以试着通过增加setup和cleanup的内容来满足应用的需求。
二、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的内容来满足应用的需求。
小结:
今天以阅读代码的形式学习了Hadoop中Mapper类和Reducer类的主要方法。
阅读全文
0 0
- 大数据学习记录(day5)-Hadoop之Mapper类和Reducer类代码学习
- Hadoop学习之传递命令行参数给Mapper和Reducer
- Hadoop-2.4.1学习之Mapper和Reducer
- Hadoop-2.4.1学习之Mapper和Reducer
- Hadoop-2.4.1学习之Mapper和Reducer
- Hadoop-Mapper-Reducer文档学习
- hadoop学习-Mapper和Reducer的输出类型
- Hadoop mapper类和reducer类的阅读 Hadoop(1)
- 大数据学习记录(day3)-Hadoop之MapReduce原理
- kotlin学习day5:数据类
- 大数据hadoop学习记录
- Hadoop开发周期(二):编写mapper和reducer程序
- Hadoop Mapreduce Mapper和Reducer源码
- hive学习(4)--- hql语句生成job(包括mapper和reducer)的规则探索
- Python学习记录day5
- MapReduce中Mapper类和Reducer类4函数解析
- 024_MapReduce中的基类Mapper和基类Reducer
- MapReduce框架Mapper和Reducer类源码分析
- iOS UITableView 常用方法集合
- c++实现双向有序链表的,增,删,查,合并
- “玲珑杯”线上赛 Round #15 河南专场:C -- 咸鱼魔法记
- Java枚举变量的遍历与转换
- RecyclerView 官方分割线
- 大数据学习记录(day5)-Hadoop之Mapper类和Reducer类代码学习
- USACO-Section1.4 Arithmetic Progressions [枚举]
- java 内部类详解
- Spark MLlib之矩阵
- 框架
- 选择器(二)
- HTTP与HTTPS的区别
- sparkmllib矩阵向量
- vagrant 调整内存大小