MapReduce  的序列化

本文详细介绍了MapReduce中的序列化概念,包括序列化与反序列化的过程,以及Hadoop自定义的轻量级序列化机制Writable。此外,还阐述了MapReduce中mapper和reducer对象的编写流程,以及如何通过设置分区规则来优化数据处理。

MapReduce 的 序列化


序列化(Serialization)是指把结构化对象转化为字节流。
反序列化(Deserialization)是序列化的逆过程。把字节流转为结构化对象。
当要在进程间传递对象或持久化对象的时候,就需要序列化对象成字节流,
反之当要将接收到或从磁盘读取的字节流转换为对象,就要进行反序列化。
Java 的序列化(Serializable)是一个重量级序列化框架,一个对象被序列
化后,会附带很多额外的信息(各种校验信息,header,继承体系…),不便于
在网络中高效传输;所以,hadoop 自己开发了一套序列化机制( Writable),精
简,高效。不用像 java 对象类一样传输多层的父子关系,需要哪个属性就传输
哪个属性值,大大的减少网络传输的开销。
Writable是Hadoop的序列化格式,hadoop定义了这样一个Writable接口。
一个类要支持可序列化只需实现这个接口即可。
public interface Writable {
     void write(DataOutput out) throws IOException;
     void readFields(DataInput in) throws IOException;

}

 

MapReduce编写规范

mapper对象的编写流程

1,确定map传入文本的格式类型,输入类型,输入行类型,输出key类型,输出value类型(ps,可以通过hadoop自带的序列化和反序列化来进行输出value的对象传输)

2,实现相应的map方法,一般按空格来对value进行操作,进行分类规约  

3,通过context.write(k,v)方法写

 

Reducer对象的编写流程

1,reduce实现相应的reduce方法,传入文本的格式类型,输入mapper key类型,输入mapper value类型,输出key类型,输出value类型(ps,可以通过hadoop自带的序列化和反序列化来进行输出value的对象传输)

 

将数据进行分区

job.setNumReduceTasks(3);
job.setPartitionerClass(输入相应的分区规则的类);

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值