You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "Yongzhi Chen (JIRA)" <ji...@apache.org> on 2016/01/07 16:22:39 UTC

[jira] [Commented] (HIVE-12795) Vectorized execution causes ClassCastException

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

Yongzhi Chen commented on HIVE-12795:
-------------------------------------

The patch fix the issue by making sure to use WritableObjectInspector.

> Vectorized execution causes ClassCastException
> ----------------------------------------------
>
>                 Key: HIVE-12795
>                 URL: https://issues.apache.org/jira/browse/HIVE-12795
>             Project: Hive
>          Issue Type: Bug
>          Components: Query Processor
>    Affects Versions: 1.1.0
>            Reporter: Yongzhi Chen
>            Assignee: Yongzhi Chen
>
> In some hive versions, when
> set hive.auto.convert.join=false;
> set hive.vectorized.execution.enabled = true;
> Some join queries fail with ClassCastException:
> The stack:
> {noformat}
> Caused by: java.lang.ClassCastException: org.apache.hadoop.hive.serde2.lazy.objectinspector.primitive.LazyStringObjectInspector cannot be cast to org.apache.hadoop.hive.serde2.objectinspector.primitive.SettableStringObjectInspector
> at org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpressionWriterFactory.genVectorExpressionWritable(VectorExpressionWriterFactory.java:419)
> at org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpressionWriterFactory.processVectorInspector(VectorExpressionWriterFactory.java:1102)
> at org.apache.hadoop.hive.ql.exec.vector.VectorReduceSinkOperator.initializeOp(VectorReduceSinkOperator.java:55)
> at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:385)
> at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:469)
> at org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:425)
> at org.apache.hadoop.hive.ql.exec.TableScanOperator.initializeOp(TableScanOperator.java:193)
> at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:385)
> at org.apache.hadoop.hive.ql.exec.MapOperator.initializeOp(MapOperator.java:431)
> at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:385)
> at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.configure(ExecMapper.java:126)
> ... 22 more
> {noformat}
> It can not be reproduced in hive 2.0 and 1.3 because of different code path. 
> Reproduce:
> {noformat}
> CREATE TABLE test1
>  (
>    id string)
>    PARTITIONED BY (
>   cr_year bigint,
>   cr_month bigint)
>  ROW FORMAT SERDE
>   'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe'
> STORED AS INPUTFORMAT
>   'org.apache.hadoop.hive.ql.io.RCFileInputFormat'
> OUTPUTFORMAT
>   'org.apache.hadoop.hive.ql.io.RCFileOutputFormat'
> TBLPROPERTIES (
>   'serialization.null.format'='' );
>   
>   CREATE TABLE test2(
>     id string
>   )
>    PARTITIONED BY (
>   cr_year bigint,
>   cr_month bigint)
> ROW FORMAT SERDE
>   'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe'
> STORED AS INPUTFORMAT
>   'org.apache.hadoop.hive.ql.io.RCFileInputFormat'
> OUTPUTFORMAT
>   'org.apache.hadoop.hive.ql.io.RCFileOutputFormat'
> TBLPROPERTIES (
>   'serialization.null.format'=''
>  );
> set hive.auto.convert.join=false;
> set hive.vectorized.execution.enabled = true;
>  SELECT cr.id1 ,
> cr.id2 
> FROM
> (SELECT t1.id id1,
>  t2.id id2
>  from
>  (select * from test1 ) t1
>  left outer join test2  t2
>  on t1.id=t2.id) cr;
> {noformat}



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