1.使用java语言来实现avro序列化和反序列化
使用DatumWriter和DatumReader对avro进行序列化和反序列化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| public static <T> byte[] binarySerializable(T t) { ByteArrayOutputStream out = new ByteArrayOutputStream(); BinaryEncoder binaryEncoder = EncoderFactory.get().binaryEncoder(out, null); DatumWriter<T> writer = new SpecificDatumWriter<T>((Class<T>) t.getClass()); try { writer.write(t, binaryEncoder); binaryEncoder.flush(); out.flush(); } catch (IOException e) { LOGGER.error("binary serializable error"); e.printStackTrace(); } LOGGER.debug("ByteArrayOutputStream = {}", new String(out.toByteArray())); return out.toByteArray(); }
public static <T> T binaryDeserialize(byte[] bytes, Schema schema) { try { BinaryDecoder binaryDecoder = DecoderFactory.get().binaryDecoder(bytes, null); DatumReader<T> datumReader = new SpecificDatumReader<T>(schema); T read = datumReader.read(null, binaryDecoder); return read; } catch (IOException e) { LOGGER.error("binary deserialize error"); e.printStackTrace(); } return null; }
|
使用Twitter 的 Bijection 类库来实现avro对象的序列化和反序列化
参考:Kafka 中使用 Avro 序列化框架(二):使用 Twitter 的 Bijection 类库实现 avro 的序列化与反序列化
2.使用python语言来实现avro序列化和反序列化
3.使用go语言来实现avro序列化和反序列化