You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Ruochen Zou (JIRA)" <ji...@apache.org> on 2018/05/08 10:09:00 UTC

[jira] [Created] (HIVE-19458) Wrong result for LEFT JOIN when hive.auto.convert.join.use.nonstaged set to true

Ruochen Zou created HIVE-19458:
----------------------------------

             Summary: Wrong result for LEFT JOIN when hive.auto.convert.join.use.nonstaged set to true
                 Key: HIVE-19458
                 URL: https://issues.apache.org/jira/browse/HIVE-19458
             Project: Hive
          Issue Type: Bug
            Reporter: Ruochen Zou


{code:java}
create table if not exists left_join_l (
  id int,
  name string
);
create table if not exists left_join_r (
  id int,
  age int
  );
insert into left_join_l VALUES (1, 'Li'), (2, 'Smith'), (3, 'Johnson');
insert into left_join_r VALUES (1, 20), (2, 30);

set hive.auto.convert.join=true;
set hive.auto.convert.join.use.nonstaged=true;
set hive.cbo.enable=false;

select a.id aid, b.id bid, name, age from
left_join_l a
left join left_join_r b
on (a.id=b.id)
{code}
The returned is:
||aid||bid||name||age||
|1|1|Li|1|
|2|2|Smith|2|
|3|NULL|Johnson|NULL|

Expect:
||aid||bid||name||age||
|1|1|Li|20|
|2|2|Smith|30|
|3|NULL|Johnson|NULL|

Another query:
{code:java}
set hive.auto.convert.join=true;
set hive.auto.convert.join.use.nonstaged=true;
set hive.cbo.enable=false;

select a.id aid, b.id bid, name, age from
left_join_r a
left join left_join_l b
on (a.id=b.id)
{code}
it will fails with this message:
{code:java}
Error: java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row {"id":1,"age":20}
    at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.map(ExecMapper.java:169)
    at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:430)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:342)
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:167)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1616)
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row {"id":1,"age":20}
    at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:499)
    at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.map(ExecMapper.java:160)
    ... 8 more
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Unexpected exception from MapJoinOperator : org.apache.hadoop.io.IntWritable cannot be cast to org.apache.hadoop.io.Text
    at org.apache.hadoop.hive.ql.exec.MapJoinOperator.process(MapJoinOperator.java:454)
    at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:878)
    at org.apache.hadoop.hive.ql.exec.TableScanOperator.process(TableScanOperator.java:130)
    at org.apache.hadoop.hive.ql.exec.MapOperator$MapOpCtx.forward(MapOperator.java:149)
    at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:489)
    ... 9 more
Caused by: java.lang.ClassCastException: org.apache.hadoop.io.IntWritable cannot be cast to org.apache.hadoop.io.Text
    at org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableStringObjectInspector.getPrimitiveWritableObject(WritableStringObjectInspector.java:41)
    at org.apache.hadoop.hive.serde2.lazy.LazyUtils.writePrimitiveUTF8(LazyUtils.java:259)
    at org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe.serialize(LazySimpleSerDe.java:292)
    at org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe.serializeField(LazySimpleSerDe.java:247)
    at org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe.doSerialize(LazySimpleSerDe.java:231)
    at org.apache.hadoop.hive.serde2.AbstractEncodingAwareSerDe.serialize(AbstractEncodingAwareSerDe.java:55)
    at org.apache.hadoop.hive.ql.exec.FileSinkOperator.process(FileSinkOperator.java:719)
    at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:878)
    at org.apache.hadoop.hive.ql.exec.SelectOperator.process(SelectOperator.java:95)
    at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:878)
    at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.internalForward(CommonJoinOperator.java:647)
    at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.genAllOneUniqueJoinObject(CommonJoinOperator.java:679)
    at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.checkAndGenObject(CommonJoinOperator.java:757)
    at org.apache.hadoop.hive.ql.exec.MapJoinOperator.process(MapJoinOperator.java:441)
    ... 13 more
{code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)