You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Mohammad Kamrul Islam (JIRA)" <ji...@apache.org> on 2014/05/12 23:48:15 UTC

[jira] [Created] (HIVE-7049) Unable to deserialize AVRO data when file schema and record schema are different and nullable

Mohammad Kamrul Islam created HIVE-7049:
-------------------------------------------

             Summary: Unable to deserialize AVRO data when file schema and record schema are different and nullable
                 Key: HIVE-7049
                 URL: https://issues.apache.org/jira/browse/HIVE-7049
             Project: Hive
          Issue Type: Bug
            Reporter: Mohammad Kamrul Islam
            Assignee: Mohammad Kamrul Islam


It mainly happens when 
1 )file schema and record schema are not same
2 ) Record schema is nullable  but file schema is not.

The potential code location is at class AvroDeserialize
 
{noformat}
 if(AvroSerdeUtils.isNullableType(recordSchema)) {
      return deserializeNullableUnion(datum, fileSchema, recordSchema, columnType);
    }
{noformat}

In the above code snippet, recordSchema is verified if it is nullable. But the file schema is not checked.

I tested with these values:
{noformat}
recordSchema= ["null","string"]
fielSchema= "string"
{noformat}

And i got the following exception <line numbers might not be the same due to mu debugged code version>.

{noformat}
org.apache.avro.AvroRuntimeException: Not a union: "string" 
        at org.apache.avro.Schema.getTypes(Schema.java:272)
        at org.apache.hadoop.hive.serde2.avro.AvroDeserializer.deserializeNullableUnion(AvroDeserializer.java:275)
        at org.apache.hadoop.hive.serde2.avro.AvroDeserializer.worker(AvroDeserializer.java:205)
        at org.apache.hadoop.hive.serde2.avro.AvroDeserializer.workerBase(AvroDeserializer.java:188)
        at org.apache.hadoop.hive.serde2.avro.AvroDeserializer.deserialize(AvroDeserializer.java:174)
        at org.apache.hadoop.hive.serde2.avro.TestAvroDeserializer.verifyNullableType(TestAvroDeserializer.java:487)
        at org.apache.hadoop.hive.serde2.avro.TestAvroDeserializer.canDeserializeNullableTypes(TestAvroDeserializer.java:407)

{noformat}




--
This message was sent by Atlassian JIRA
(v6.2#6252)