Mapper与Reducer浅析(一)
2015-08-10 21:16
555 查看
一、 Mapper
Mapper接口负责数据处理阶段,它采用的形式为Mapper<K1,V1,K2,V2>Java泛型,这里键类和值类分别实现WritableComparable和Writable接口。
Mapper只有一个方法—map,用于处理一个单独的键、值对。
Void map(K1key,V1 value,OutputCollector<K2,V2> output,Reporter reporter) throwsIOException该函数处理一个给定的键/值对(K1,V1),生成一个键/值对(K2,V2)的列表(该列表也可能为空),OutputCollector接收这个映射过程的输出,Reportor可提供对Mapper相关附加信息的记录,形成任务进度。
Mapper中包含的两个主要方法:
1、 void configure(JobConfjob) 该函数提取XML配置文件或者应用程序主类中的参数,在数据处理前调用。
2、 void close(),map任务结束前的最后一个操作,该函数完成所有的收尾工作,如:关闭数据库连接、打开文件等。
二、 Reducer
Reduce的实现和mapper一样必须首先在MapReduce基类上扩展,允许配置和清理,还必须实现Reducer接口,使其具有如下的单一方法:
Void reduce(K2key,Iterator<V2> values,OutputCollector<K3,V3> output,Reporterreporter) throwsIOException
当reducer任务接收来自各个mapper的输出时,它按照键/值对中键对输入数据进行排序,并将相同键的值归并。然后调用reduce()函数,并通过迭代处理那些与指定键相关联的值,生成一个(可能为空的)列表(K3,V3).OutputCollector 接收reduce阶段的输出,并写入输出文件,Reporter可提供reducer相关的附加信息的记录,形成任务进度。
Partitioner:重定向Mapper输出(map和reduce两个阶段之间极其重要的步骤)。
Mapper接口负责数据处理阶段,它采用的形式为Mapper<K1,V1,K2,V2>Java泛型,这里键类和值类分别实现WritableComparable和Writable接口。
Mapper只有一个方法—map,用于处理一个单独的键、值对。
Void map(K1key,V1 value,OutputCollector<K2,V2> output,Reporter reporter) throwsIOException该函数处理一个给定的键/值对(K1,V1),生成一个键/值对(K2,V2)的列表(该列表也可能为空),OutputCollector接收这个映射过程的输出,Reportor可提供对Mapper相关附加信息的记录,形成任务进度。
Mapper中包含的两个主要方法:
1、 void configure(JobConfjob) 该函数提取XML配置文件或者应用程序主类中的参数,在数据处理前调用。
2、 void close(),map任务结束前的最后一个操作,该函数完成所有的收尾工作,如:关闭数据库连接、打开文件等。
二、 Reducer
Reduce的实现和mapper一样必须首先在MapReduce基类上扩展,允许配置和清理,还必须实现Reducer接口,使其具有如下的单一方法:
Void reduce(K2key,Iterator<V2> values,OutputCollector<K3,V3> output,Reporterreporter) throwsIOException
当reducer任务接收来自各个mapper的输出时,它按照键/值对中键对输入数据进行排序,并将相同键的值归并。然后调用reduce()函数,并通过迭代处理那些与指定键相关联的值,生成一个(可能为空的)列表(K3,V3).OutputCollector 接收reduce阶段的输出,并写入输出文件,Reporter可提供reducer相关的附加信息的记录,形成任务进度。
Partitioner:重定向Mapper输出(map和reduce两个阶段之间极其重要的步骤)。
相关文章推荐
- android ListView详解
- Android之Handler机制
- Android Synchronization Fences – An Introduction
- Android之事件传递机制
- android开发中遇到的问题汇总【八】
- IOS开发之通知NSNotificationCenter
- ViewPager + Fragment 用法总结
- Android View.onMeasure方法的理解
- AndroidStudio配置Androidannotation
- Android Studio 中文乱码问题
- android 实现QQ好友分享和QQ空间分享
- Unity中创建二维码
- Android之——NDK环境搭建
- iOS9 Beta5内置壁纸—艺术家的文艺范
- IOS MapKit 输入城市名获取经纬度显示地图
- PhoneGap入门 iOS 插件开发
- Android安全机制
- 通过经纬度坐标计算两个点之间的距离
- IOS(数据持久化1)
- cocos2d-x手机游戏(IOS版本)接入分享shareSDK(新浪微博和微信分享)记录