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

Ashutosh Chauhan commented on HIVE-5199:
----------------------------------------

Fixed via HIVE-5249
                
> Custom SerDe containing a nonSettable complex data type row object inspector 
> throws cast exception with HIVE 0.11
> -----------------------------------------------------------------------------------------------------------------
>
>                 Key: HIVE-5199
>                 URL: https://issues.apache.org/jira/browse/HIVE-5199
>             Project: Hive
>          Issue Type: Bug
>    Affects Versions: 0.11.0
>            Reporter: Hari Sankar Sivarama Subramaniyan
>            Assignee: Hari Sankar Sivarama Subramaniyan
>            Priority: Critical
>             Fix For: 0.13.0
>
>         Attachments: HIVE-5199.2.patch.txt, HIVE-5199.3.patch.txt, 
> HIVE-5199.patch.4.txt, HIVE-5199.patch.txt
>
>
> The issue happens because of the changes in HIVE-3833.
> Consider a partitioned table with different custom serdes for the partition 
> and tables. The serde at table level, say, customSerDe1's object inspector is 
> of settableDataType where as the serde at partition level, say, 
> customSerDe2's object inspector is of nonSettableDataType. The current 
> implementation introduced by HIVE-3833 does not convert nested Complex Data 
> Types which extend nonSettableObjectInspector to a settableObjectInspector 
> type inside ObjectInspectorConverters.getConvertedOI(). However, it tries to 
> typecast the nonSettableObjectInspector to a settableObjectInspector inside  
> ObjectInspectorConverters.getConverter(ObjectInspector inputOI, 
> ObjectInspector outputOI).
> The attached patch HIVE-5199.2.patch.txt contains a stand-alone test case.
> The below exception can happen via FetchOperator as well as MapOperator. 
> For example, consider the FetchOperator.
> Inside FetchOperator consider the following call:
> getRecordReader()->ObjectInspectorConverters. getConverter()
> The stack trace as follows:
> 2013-08-28 17:57:25,307 ERROR CliDriver (SessionState.java:printError(432)) - 
> Failed with exception java.io.IOException:java.lang.ClassCastException: 
> com.skype.data.whaleshark.hadoop.hive.proto.ProtoMapObjectInspector cannot be 
> cast to 
> org.apache.hadoop.hive.serde2.objectinspector.SettableMapObjectInspector
> java.io.IOException: java.lang.ClassCastException: 
> com.skype.data.whaleshark.hadoop.hive.proto.ProtoMapObjectInspector cannot be 
> cast to 
> org.apache.hadoop.hive.serde2.objectinspector.SettableMapObjectInspector
> at 
> org.apache.hadoop.hive.ql.exec.FetchOperator.getNextRow(FetchOperator.java:544)
> at 
> org.apache.hadoop.hive.ql.exec.FetchOperator.pushRow(FetchOperator.java:488)
> at org.apache.hadoop.hive.ql.exec.FetchTask.fetch(FetchTask.java:136)
> at org.apache.hadoop.hive.ql.Driver.getResults(Driver.java:1412)
> at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:271)
> at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:216)
> at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:413)
> at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:756)
> at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:614)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:601)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:160)
> Caused by: java.lang.ClassCastException: 
> com.skype.data.whaleshark.hadoop.hive.proto.ProtoMapObjectInspector cannot be 
> cast to 
> org.apache.hadoop.hive.serde2.objectinspector.SettableMapObjectInspector
> at 
> org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorConverters.getConverter(ObjectInspectorConverters.java:144)
> at 
> org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorConverters$StructConverter.<init>(ObjectInspectorConverters.java:307)
> at 
> org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorConverters.getConverter(ObjectInspectorConverters.java:138)
> at 
> org.apache.hadoop.hive.ql.exec.FetchOperator.getRecordReader(FetchOperator.java:406)
> at 
> org.apache.hadoop.hive.ql.exec.FetchOperator.getNextRow(FetchOperator.java:508)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to