第一步:实现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();
Hadooop序列化框架使用
猜你喜欢
转载自houshangxiao.iteye.com/blog/2223967
今日推荐
周排行