Skip to content

Instantly share code, notes, and snippets.

@johnllao
Created September 13, 2015 14:58
Show Gist options
  • Save johnllao/b887196a4d2313ee11cb to your computer and use it in GitHub Desktop.
Save johnllao/b887196a4d2313ee11cb to your computer and use it in GitHub Desktop.
package org.hello.avro;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import org.apache.avro.Schema;
import org.apache.avro.generic.GenericData;
import org.apache.avro.generic.GenericDatumReader;
import org.apache.avro.generic.GenericDatumWriter;
import org.apache.avro.generic.GenericRecord;
import org.apache.avro.io.BinaryDecoder;
import org.apache.avro.io.BinaryEncoder;
import org.apache.avro.io.DatumReader;
import org.apache.avro.io.DatumWriter;
import org.apache.avro.io.DecoderFactory;
import org.apache.avro.io.EncoderFactory;
public class HelloAvro {
public static void main(String[] args) {
System.out.printf("AVRO Serialize and Deserialize Binary (version 1.0.0)\n");
System.out.printf("(c) hello.org 2015\n");
try {
Schema.Parser schemaParser = new Schema.Parser();
Schema schema = schemaParser.parse(HelloAvro.class.getClassLoader().getResourceAsStream("schemas/User.avsc"));
GenericRecord user1 = new GenericData.Record(schema);
user1.put("name", "John");
user1.put("favorite_number", 256);
user1.put("favorite_color", "blue");
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
BinaryEncoder encoder = EncoderFactory.get().binaryEncoder(outStream, null);
DatumWriter<GenericRecord> writer = new GenericDatumWriter<GenericRecord>(schema);
writer.write(user1, encoder);
encoder.flush();
byte[] data = outStream.toByteArray();
System.out.printf("%s bytes\n", data.length);
ByteArrayInputStream inStream = new ByteArrayInputStream(data);
BinaryDecoder decoder = DecoderFactory.get().binaryDecoder(inStream, null);
DatumReader<GenericRecord> reader = new GenericDatumReader<GenericRecord>(schema);
GenericRecord user2 = reader.read(null, decoder);
System.out.printf("Name: %s\n", user2.get("name"));
System.out.printf("Done\n");
}
catch (Exception e) {
System.out.printf(e.getMessage());
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment