avro-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Roger Hoover <roger.hoo...@gmail.com>
Subject Re: Direct conversion from Generic Record to Specific Record
Date Thu, 06 Feb 2014 17:07:00 GMT
Thank you, Mika.  I'll do this in mean time.  Was wondering if there was a
better way...


On Thu, Feb 6, 2014 at 6:10 AM, Mika Ristimaki <mika.ristimaki@gmail.com>wrote:

> Hi,
>
> If you don't mind the overhead you can make the conversion through the
> avro binary data. So something like this should work (assuming both records
> are using the same schema)
>
> GenericRecord myRecord = ...
> GenericDatumWriter<GenericRecord> writer = new
> GenericDatumWriter<GenericRecord>(MyCustomRecord.getClassSchema());
> ByteArrayOutputStream out = new ByteArrayOutputStream();
> Encoder encoder = EncoderFactory.get().binaryEncoder(out, null);
> writer.write(myRecord, encoder);
> encoder.flush();
>
> byte[] avroData = out.toByteArray();
> out.close();
>
> SpecificDatumReader<MyCustomRecord> reader = new
> SpecificDatumReader<MyCustomRecord>(MyCustomRecord.class);
> Decoder decoder = DecoderFactory.get().binaryDecoder(avroData, null);
> MyCustomRecord myCustomRecord = reader.read(null, decoder);
>
> -Mika
>
> On Feb 6, 2014, at 12:59 AM, Roger Hoover <roger.hoover@gmail.com> wrote:
>
> > Hi Christophe,
> >
> > Thanks for your reply.  When you say that we could write a generic
> conversion function, do you mean we can write one that works for all
> schemas?  That would be great!
> >
> > I'd like an API something like this:
> >
> > MyCustomRecord record = MyCustomRecord.newBuilder(GenericRecord
> record).build()
> >
> > Thanks,
> >
> > Roger
> >
> >
> > On Wed, Feb 5, 2014 at 10:59 AM, Christophe Taton <
> christophe.taton@gmail.com> wrote:
> > Hi Roger,
> > With the change proposed in
> https://issues.apache.org/jira/browse/AVRO-1443, you would be able to
> create a specific record using a generic builder API. That means we could
> write a generic conversion function that creates specific records.
> > Would that work for you?
> > C.
> >
> >
> > On Wed, Feb 5, 2014 at 10:23 AM, Roger Hoover <roger.hoover@gmail.com>
> wrote:
> > Hi,
> >
> > I'm working with an existing API that hands me a GenericRecord.  Is
> there an easy way I can covert it into a SpecificRecord.  Really I want to
> get it into the code-generated object.
> >
> > Thanks,
> >
> > Roger
> >
> >
> >
> >
>
>

Mime
View raw message