第一步:实现Writable接口(TestGenericWritable.java)
public static class Baz extends Bar {
@Override
public void readFields(DataInput in) throws IOException {
super.readFields(in);
//needs a configuration parameter
assertEquals("Configuration is not set for the wrapped object",
CONF_TEST_VALUE, getConf().get(CONF_TEST_KEY));
}
@Override
public void write(DataOutput out) throws IOException {
super.write(out);
}
}
/
Text before = new Text("test writable");
第二步:在序列化工厂中获取所有支持的序列化/反序列化JavaSerialization/WritableSerialization/AvroSerialization/AvroReflectSerialization/AvroSpecificSerialization
SerializationFactory factory = new SerializationFactory(conf);
Serializer<K> serializer
= factory.getSerializer(GenericsUtil.getClass(before));
Deserializer<K> deserializer
= factory.getDeserializer(GenericsUtil.getClass(before));
第三步:定义输入/输出并对数据进行序列化
DataOutputBuffer out = new DataOutputBuffer();
serializer.open(out);
serializer.serialize(before);
serializer.close();
DataInputBuffer in = new DataInputBuffer();
in.reset(out.getData(), out.getLength());
deserializer.open(in);
K after = deserializer.deserialize(null);
deserializer.close();