Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Threaded View
Avro >> mail # user >> GenericDatumReader and datum reuse


Copy link to this message
-
Re: GenericDatumReader and datum reuse
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)