Uploaded image for project: 'Apache Avro'
  1. Apache Avro
  2. AVRO-780

union handling in ReflectDatumWriter

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.5.0
    • 1.5.1
    • java
    • None
    • Mac with VMWare running Linux training-vm 2.6.28-19-server #61-Ubuntu

    • Reviewed

    Description

      Our avdl schema definition for the record DeviceRow has a field:

      union

      {array<DynamicColumn4Games>, null}

      Games__;

      When we migrated our MR jobs from 1.4.0 to 1.5.0, we got following messages:

      ===================================================================================================
      11/03/10 11:31:02 INFO mapred.TaskInProgress: Error from attempt_20110310113041953_0001_m_000000_0: java.lang.NullPointerException: in com.ngmoco.hbase.DeviceRow in union null of union in field Games__ of com.ngmoco.hbase.DeviceRow
      at org.apache.avro.reflect.ReflectDatumWriter.write(ReflectDatumWriter.java:104)
      at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:57)
      at org.apache.avro.mapred.AvroSerialization$AvroWrapperSerializer.serialize(AvroSerialization.java:131)
      at org.apache.avro.mapred.AvroSerialization$AvroWrapperSerializer.serialize(AvroSerialization.java:114)
      at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.collect(MapTask.java:900)
      at org.apache.hadoop.mapred.MapTask$OldOutputCollector.collect(MapTask.java:466)
      at org.apache.avro.mapred.HadoopMapper$MapCollector.collect(HadoopMapper.java:69)
      at com.ngmoco.ngpipes.sourcing.NgActivityGatheringMapper.map(NgActivityGatheringMapper.java:91)
      at com.ngmoco.ngpipes.sourcing.NgActivityGatheringMapper.map(NgActivityGatheringMapper.java:1)
      at org.apache.avro.mapred.HadoopMapper.map(HadoopMapper.java:80)
      at org.apache.avro.mapred.HadoopMapper.map(HadoopMapper.java:34)
      at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
      at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358)
      at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307)
      at org.apache.hadoop.mapred.Child.main(Child.java:170)
      Caused by: java.lang.NullPointerException: in union null of union in field Games__ of com.ngmoco.hbase.DeviceRow
      at org.apache.avro.generic.GenericDatumWriter.npe(GenericDatumWriter.java:92)
      at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:86)
      at org.apache.avro.reflect.ReflectDatumWriter.write(ReflectDatumWriter.java:102)
      ... 14 more
      ===================================================================================================

      After we change definition of the field Games__ to:

      union

      {null, array<DynamicColumn4Games>}

      Games__;

      The system stop complaining.

      Attachments

        1. AVRO-780.patch
          2 kB
          Doug Cutting
        2. AVRO-780.patch
          1 kB
          Doug Cutting
        3. AVRO-780.patch
          0.7 kB
          Doug Cutting

        Activity

          People

            cutting Doug Cutting
            eychih ey-chih chow
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - 72h
                72h
                Remaining:
                Remaining Estimate - 72h
                72h
                Logged:
                Time Spent - Not Specified
                Not Specified