You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Travis Crawford (JIRA)" <ji...@apache.org> on 2012/07/18 02:55:35 UTC

[jira] [Commented] (HIVE-3266) Hive queries over thrift binary fields fail

    [ https://issues.apache.org/jira/browse/HIVE-3266?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13416782#comment-13416782 ] 

Travis Crawford commented on HIVE-3266:
---------------------------------------

The following exception is thrown on trunk when trying to read a "binary" field through ThriftDeserializer:

{code}
2012-07-18 00:45:49,532 ERROR CliDriver (SessionState.java:printError(400)) - Failed with exception java.io.IOException:java.lang.ClassCastExceptio
n: [B cannot be cast to org.apache.hadoop.hive.serde2.lazy.ByteArrayRef
java.io.IOException: java.lang.ClassCastException: [B cannot be cast to org.apache.hadoop.hive.serde2.lazy.ByteArrayRef
        at org.apache.hadoop.hive.ql.exec.FetchTask.fetch(FetchTask.java:173)
        at org.apache.hadoop.hive.ql.Driver.getResults(Driver.java:1375)
        at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:270)
        at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:216)
        at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:412)
        at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:750)
        at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:613)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:186)
Caused by: java.lang.ClassCastException: [B cannot be cast to org.apache.hadoop.hive.serde2.lazy.ByteArrayRef
        at org.apache.hadoop.hive.serde2.objectinspector.primitive.JavaBinaryObjectInspector.getPrimitiveWritableObject(JavaBinaryObjectInspector.java:48)
        at org.apache.hadoop.hive.serde2.SerDeUtils.buildJSONString(SerDeUtils.java:276)
        at org.apache.hadoop.hive.serde2.SerDeUtils.buildJSONString(SerDeUtils.java:349)
        at org.apache.hadoop.hive.serde2.SerDeUtils.getJSONString(SerDeUtils.java:219)
        at org.apache.hadoop.hive.serde2.DelimitedJSONSerDe.serializeField(DelimitedJSONSerDe.java:59)
        at org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe.serialize(LazySimpleSerDe.java:365)
        at org.apache.hadoop.hive.ql.exec.FetchTask.fetch(FetchTask.java:163)
        ... 11 more
{code}

Here we see the object is already a byte[], but we're trying to use it as a ByteArrayRef. A small patch handles this case.
                
> Hive queries over thrift binary fields fail
> -------------------------------------------
>
>                 Key: HIVE-3266
>                 URL: https://issues.apache.org/jira/browse/HIVE-3266
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Travis Crawford
>            Assignee: Travis Crawford
>


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira