MapReduce之序列化

it2023-10-21  86

什么是序列化

序列化:把对象变成二进制序列。A向网络传输必须传序列化数据。

反序列化:把二进制序列变为对象。B从网络读取必须读取反序列化数据。


Hadoop的序列化与Java的序列化

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类中作相应修改。

最新回复(0)