hive-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ashutosh Chauhan (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HIVE-11176) aused by: java.lang.ClassCastException: org.apache.hadoop.hive.serde2.lazybinary.LazyBinaryStruct cannot be cast to [Ljava.lang.Object;
Date Wed, 12 Aug 2015 02:53:45 GMT

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

Ashutosh Chauhan commented on HIVE-11176:
-----------------------------------------

+1

> aused by: java.lang.ClassCastException: org.apache.hadoop.hive.serde2.lazybinary.LazyBinaryStruct
cannot be cast to [Ljava.lang.Object;
> ---------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HIVE-11176
>                 URL: https://issues.apache.org/jira/browse/HIVE-11176
>             Project: Hive
>          Issue Type: Bug
>          Components: Hive, Tez
>    Affects Versions: 1.0.0, 1.2.0
>         Environment: Hive 1.2 and TEz 0.7
>            Reporter: Soundararajan Velu
>            Priority: Critical
>         Attachments: HIVE-11176.1.patch.txt
>
>
> Unreachable code: 
> hive/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardStructObjectInspector.java
> // With Data
>   @Override
>   @SuppressWarnings("unchecked")
>   public Object getStructFieldData(Object data, StructField fieldRef) {
>     if (data == null) {
>       return null;
>     }
>     // We support both List<Object> and Object[]
>     // so we have to do differently.
>     boolean isArray = ! (data instanceof List);
>     if (!isArray && !(data instanceof List)) {
>       return data;
>     }
> *************************
> The if condition above translates to 
> if(!true && true) the code section cannot be reached,
> this causes a lot of class cast exceptions while using Tez or ORC file formats or custom
jsonsede, Strangely this happens only while using Tez. 
> Changed the code to 
>  boolean isArray = data.getClass().isArray();
>     if (!isArray && !(data instanceof List)) {
>       return data;
>     }
> Even then, lazystructs get passed as fields causing downstream cast exceptions like lazystruct
cannot be cast to Text etc...
> So I changed the method to something like this,
>  // With Data
>   @Override
>   @SuppressWarnings("unchecked")
>   public Object getStructFieldData(Object data, StructField fieldRef) {
>     if (data == null) {
>       return null;
>     }
>         if (data instanceof LazyBinaryStruct) {
>                 data = ((LazyBinaryStruct) data).getFieldsAsList();
>         }
>     // We support both List<Object> and Object[]
>     // so we have to do differently.
>     boolean isArray = data.getClass().isArray();
>     if (!isArray && !(data instanceof List)) {
>       return data;
>     }
> This is causing arrayindexout of bounds exception and other typecast exceptions in object
inspectors,
> Please help,



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message