序列化:把对象变成二进制序列。A向网络传输必须传序列化数据。
反序列化:把二进制序列变为对象。B从网络读取必须读取反序列化数据。
Java的序列化是重量级序列化,虽然安全,但不适用于大数据。Hadoop有自己的轻量级序列化。
Hadoop已经序列化好的数据类型如下。
Java类型
Hadoop Writable类型
Boolean
BooleanWritable
Byte
ByteWritable
Int
IntWritable
Float
FloatWritable
Long
LongWritable
Double
DoubleWritable
String
Text
Map
MapWritable
Array
ArrayWritable
null
NullWritable
1)XxxBean类
//读写序列化需实现Writable接口 public class FlowBean implements Writable { private Xxx field1; private Xxx field2; //空参构造器、get、set、toString方法 //写序列化 public void write(DataOutput dataOutput) throws IOException { dataOutput.writeXxx(field1); dataOutput.writeXxx(field2); } //读序列化,顺序要和写保持一致 public void readFields(DataInput dataInput) throws IOException { field1 = dataInput.readXxx(); field2 = dataInput.readXxx(); } }2)对应Mapper、Reducer、Driver类中作相应修改。