1、概述
Java 的序列化是一个重量级序列化框架(Serializable),一个对象被序列化后,会附带很多额 外的信息(各种校验信息,header,继承体系等),不便于在网络中高效传输;所以,Hadoop 自己开发了一套序列化机制(参与序列化的对象的类都要实现 Writable 接口),精简,高效
Hadoop 中的序列化框架已经对基本类型和 null 提供了序列化的实现了。分别是:
2、Java 序列化
以案例为例说明:
3、自定义对象实现 MapReduce 框架的序列化
如果需要将自定义的bean放在key中传输,则还需要实现Comparable接口,因为MapReduce 框中的 shuffle 过程一定会对 key 进行排序,此时,自定义的 bean 实现的接口应该是: public class FlowBean implements WritableComparable<FlowBean>
以案例为例说明 下面是进行了序列化的 FlowBean 类:
下面是统计上行流量和下行流量之和的 MR 程序 FlowSum: