解读:Hadoop序列化类
序列化( serialization )是指将结构化的对象转化字节流,以便在进程间通信或写入硬盘永久存储。 反序列化( deserialization )是指将字节流转回到结构化对象的过程。 需要注意的是,能够在网络上传输的只能是字节流。所以,Map的中间结果在不同主机间Shuffle洗牌时,结构化对象将经历序列化 (map结果写入磁盘) 和反序列化 (reduce读取map结果) 两个过程。 Writable接口 Hadoop并没有使用JAVA的序列化机制,而是引入了自己的序列化系统, package org.apache.hadoop.io 这个包中定义了大量的可序列化对象,这些对象都实现了Writable接口,Writable接口是序列化对象的一个通用接口。其中包含了 write()和readFields() 两个序列化相关方法。 WritableComparable接口 WriteCompareable接口是对Wirtable接口的二次封装, 并提供了compareTo(T o)方法 ,用于序列化对象的比较。因为MR中间有个基于key的排序阶段。 RawComparator接口 Hadoop为优化 Shuffle阶段的排序 ,提供了原生的 比较器接口RawComparator<T> 用于在 字节流层面进行比较 ,从而大大缩短了比较的时间开销。该接口并非被多数的衍生类所实现