node-avro-io

This will allow you to encode / decode avro binary format to / from json format, it supports both deflate and snappy compressions and supports node streams

Node Avro IO

Implements the avro spec

This status of this repository is initial release

npm install node-avro-io

or

npm install git://github.com/jamesbrucepower/node-avro-io.git

Serializing data to an avro binary file

var avro = require('./index').DataFile.AvroFile();
var schema = {
            "name": "data",
            "type": "record",
            "fields": [
                {"name":"key","type": "string"},
                {"name":"value","type": "string"},
                {"name":"flag","type": "boolean"},
                {"name":"subrecord","type":"record","fields":[
                    {"name":"key","type":"string"},
                    {"name":"value","type":["string","int","null"]}
                ]}
            ]
};
var writer = avro.open("test.avro", schema, { flags: 'w', codec: 'deflate' });
writer
    .append({ key:"john", value:"hive", flag: true, subrecord: { key: "preference", value: 2}})
    .append({ key:"eric", value:"lola", flag: true, subrecord: { key: "postcode", value: null}})
    .end({ key:"fred", value:"wonka", flag: false, subrecord: { key: "city", value: "michigan"}});

Deserializing data to from avro binary file

require("./index").DataFile.AvroFile()
    .open('test.avro', null, { flags: 'r' })
        .on('data', function(data) {
            console.log(data);
        });

See tests for more usage examples

TODO:

  • Avro RPC
  • Support for Trevni (column major data serialization)