- 1、本文档共55页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
华中科技大学MapReduce的类型与输入输出
第4讲MapReduce类型与输入/
输出格式
辜希武
IDC实验室
1694551702@
主要内容
MapReduce数据处理模型非常简单,map和
reduce函数的输入输出都是键/值对(key/value
pair) ,这一讲介绍各种类型的数据如何在
MapReduce中使用
MapReduce的类型
MapReduce输入格式
MapReduce输出格式
MapReduce的类型
MapReduce的map、reduce函数的通用形式如下:
map: (K1,V1)- listK2,V2
reduce: (K2,list(V2))- listK3,V3
其中K1 ,V1 ,K2 ,V2 ,K3 ,V3都是类型
通常map函数的输入类型(K1 ,V1 )和map的输出类型(K2 ,V2 )不一样
但是reduce的输入类型必须和map的输出类型一样
reduce的输入类型(K2 ,V2 )与输出类型(K3 ,V3 )可以不一样
MapReduce的类型
用户定义的Mapper子类需要继承这个类
JAVA API可以看出以上特点
public class MapperKEYIN, VALUEIN, KEYOUT, VALUEOUT {
public class Context extends MapContextKEYIN, VALUEIN, KEYOUT, VALUEOUT {
// ...
} Mapper的Context类作为Mapper的内部类实现,map函数使用的Context对象是
MapContext类型
protected void map(KEYIN key, VALUEIN value,
Context context) throws IOException, InterruptedException {
// ...
} 用户定义的Reducer子类需要继承这个类
} 用户定义的Mapper子类需要重新实现这个方法
public class ReducerKEYIN, VALUEIN, KEYOUT, VALUEOUT {
public class Context extends ReducerContextKEYIN, VALUEIN, KEYOUT, VALUEOUT {
// ...
} Reducer的Context类作为Reducer的内部类实现,reduce函数使用的Context对象是
ReducerContext类型
protected void reduce(KEYIN key, IterableVALUEIN values,
Context context) throws IOException,InterruptedException {
// ...
} 用户定义的Reducer子类需要重新实现这个方法
}
MapReduce的类型
二种Context对象的作用是输出key-value对,因此它们被类型参数化,Context
的write方法原型是
public void write(KEYOUT key, VALUEOUT value)
throws IOException, InterruptedException
既然Mapper和Reducer是不同的类,所以它们的类型参数作用域不同,例如
Mapper的类型参数KEYIN的实际类型可以和Reducer的类型参数KEYIN的实际类
型不同
同样地,虽然map的输出类型必须和reduce的输入
文档评论(0)