Created
September 13, 2015 14:58
-
-
Save johnllao/b887196a4d2313ee11cb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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