A simple approach to reuse is to pass the value previously returned from read():
GenericRecord record = null;
while (...) {
record = reader.read(record, decoder);
... code that does not retain a pointer to record ...
}
Doug
On Wed, Oct 30, 2013 at 3:07 PM, [email protected]
<[email protected]> wrote:
> Hello,
>
> While going thorough the API for GenericDatumReader, I came across this
> read[1] method and it wasn't immediately clear to me as to what the "reuse"
> of the datum really means.
>
> So for instance if I have an evolving schema, should this datum be created
> from the readerSchema or the writerSchema. So something like:
>
> record = new GenericData.Record(readerSchema); // created with readerSchema
>
> GenericDatumReader<GenericRecord> gdr = new
> GenericDatumReader<GenericRecord>(writerSchema, readerSchema);
>
> record = gdr.read(record, binaryDecoder);
>
> Or is it better to simply leave it off as null?
>
> record = gdr.read(null, binaryDecoder);
>
>
> Thanks,
>
>
> [1]
> http://avro.apache.org/docs/1.7.4/api/java/org/apache/avro/generic/GenericDatumReader.html#read(D,
> org.apache.avro.io.Decoder)