mapper,reducer,OutputFormat

当完成读取之后,将切片完的数据作为Map的输入,进行Map;每个切片执行一个Map;

mapper要实现Mapper接口,在其中编写map方法;同时继承MapReduceBase类;实现mapper接口,其中有四种形式的参数,keyin,value,keyout,valueout,分别来指定输入key,value类型,输出key,value类型;

Mapper类中还提供了setup(),map(),cleanup(),run()方法,分别用于执行map之前的准备工作,在所有map任务完成后被调用,进行数据处理的主要操作;用于执行setup()-》run()-》cleanup()-》过程;前两个用于资源管理和利用;

就是通过map类实现mapper接口,即实现map()方法,通过指定输入输出格式来输入输出,其中有几种预定的mapper类如下:

IdentityMapper<key,value>原封不动的将输出为中间结果;

InverseMapper<key,value>将输入的<key,value>作为输出的<key,value> (inverse:逆)

RegexMapper<key>为每一个匹配的正则表达式生成一个(match,1)键值对;(regex:正则表达式)

TokenCountMapper<key>当输入值被标记时,生成一个(token,1)键值对;

MultithreadedMapper(key,value)多线程执行map方法;

Combin/partition

Combine主要负责将map中相同的key,value进行合并,避免重复传输造成文件冗余,但也可以作为结果reduce,其实它就是一种reduce,其默认实现为IndentityReducer类;

Partition过程是将map的运行结果发送到相应的Reduce中,因为reduce数量可能少,可以通过实现Partitioner接口来实现自己的Partition过程来提高负载均衡和分配效率;

Reduce过程实现reducer接口,实现reduce方法,同时继承MapReduceBase;

reduce类将Map的输出作为输入,重写reduce()方法;其中接口的四个参数和map相似;

reducer接收mapper传递过来的key/value对,然后根据key来排序,分组,并生成<key2,list<value2>>最后reducer根据<key2,list<value2>生成<key3,value3>;

预定义的reducer有以下几种:

IndentityReducer<key,value>将输入的<key,value>原封不动的输出为结果;

LongSumReducer<key>对长整型的value值求和;

IntSumReducer对整型的value值求和;

OutputFormat:

数据格式类型和InputFormat类型相似,多了个LazyOUtputFormat类型,延迟输出,保证第一条记录输出的时候才真正的创建文件;

getOutputCommit类管理任务输出;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值