You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "Frédéric ESCANDELL (JIRA)" <ji...@apache.org> on 2018/06/01 05:58:00 UTC

[jira] [Updated] (HIVE-19756) Insert request with UNION ALL and lateral view explode

     [ https://issues.apache.org/jira/browse/HIVE-19756?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Frédéric ESCANDELL updated HIVE-19756:
--------------------------------------
    Description: 
Hi,

While executing this code snippet, no data was inserted in the final table t3.

By replacing UNION ALL by UNION or removing the "lateral view explode" the code works properly.

 
{code:sql}
DROP table t1;
DROP table t2;
DROP table t3;


CREATE TABLE t1(cle string,valeur array<struct<v:string>>)
    ROW FORMAT SERDE  'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
    STORED AS 
      INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
      OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat';

INSERT INTO table t1 select * from (select "a",array(named_struct('v','x'), named_struct('v','y'))) tmp;

 CREATE TABLE t2(cle string,valeur array<struct<v:string>>)
    ROW FORMAT SERDE  'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
    STORED AS 
      INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
      OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat';

INSERT INTO table t2 select * from (select "b",array(named_struct('v','z'), named_struct('v','w'))) tmp;

DROP view v1;
DROP table t3;

CREATE VIEW v1 (cle,valeur) 
AS
select base.cle,val.v from (select cle,valeur from t1) as base
lateral view explode(base.valeur) a as val
union all
select base1.cle,val.v from (select cle,valeur from t2) as base1
lateral view explode(base1.valeur) a as val;

 CREATE TABLE t3(cle string,valeur string)
    ROW FORMAT SERDE  'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
    STORED AS 
      INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
      OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat';

insert into t3 
select * from v1;
{code}

  was:
Hi,

While executing this code snippet, no data is inserted in the final table t3.

By replacing UNION ALL by UNION or the "lateral view explode" the code works properly.

 
{code:sql}
DROP table t1;
DROP table t2;
DROP table t3;


CREATE TABLE t1(cle string,valeur array<struct<v:string>>)
    ROW FORMAT SERDE  'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
    STORED AS 
      INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
      OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat';

INSERT INTO table t1 select * from (select "a",array(named_struct('v','x'), named_struct('v','y'))) tmp;

 CREATE TABLE t2(cle string,valeur array<struct<v:string>>)
    ROW FORMAT SERDE  'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
    STORED AS 
      INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
      OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat';

INSERT INTO table t2 select * from (select "b",array(named_struct('v','z'), named_struct('v','w'))) tmp;

DROP view v1;
DROP table t3;

CREATE VIEW v1 (cle,valeur) 
AS
select base.cle,val.v from (select cle,valeur from t1) as base
lateral view explode(base.valeur) a as val
union all
select base1.cle,val.v from (select cle,valeur from t2) as base1
lateral view explode(base1.valeur) a as val;

 CREATE TABLE t3(cle string,valeur string)
    ROW FORMAT SERDE  'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
    STORED AS 
      INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
      OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat';

insert into t3 
select * from v1;
{code}


> Insert request with UNION ALL and lateral view explode
> ------------------------------------------------------
>
>                 Key: HIVE-19756
>                 URL: https://issues.apache.org/jira/browse/HIVE-19756
>             Project: Hive
>          Issue Type: Bug
>         Environment: HDP 2.6.4
>            Reporter: Frédéric ESCANDELL
>            Priority: Major
>
> Hi,
> While executing this code snippet, no data was inserted in the final table t3.
> By replacing UNION ALL by UNION or removing the "lateral view explode" the code works properly.
>  
> {code:sql}
> DROP table t1;
> DROP table t2;
> DROP table t3;
> CREATE TABLE t1(cle string,valeur array<struct<v:string>>)
>     ROW FORMAT SERDE  'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
>     STORED AS 
>       INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
>       OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat';
> INSERT INTO table t1 select * from (select "a",array(named_struct('v','x'), named_struct('v','y'))) tmp;
>  CREATE TABLE t2(cle string,valeur array<struct<v:string>>)
>     ROW FORMAT SERDE  'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
>     STORED AS 
>       INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
>       OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat';
> INSERT INTO table t2 select * from (select "b",array(named_struct('v','z'), named_struct('v','w'))) tmp;
> DROP view v1;
> DROP table t3;
> CREATE VIEW v1 (cle,valeur) 
> AS
> select base.cle,val.v from (select cle,valeur from t1) as base
> lateral view explode(base.valeur) a as val
> union all
> select base1.cle,val.v from (select cle,valeur from t2) as base1
> lateral view explode(base1.valeur) a as val;
>  CREATE TABLE t3(cle string,valeur string)
>     ROW FORMAT SERDE  'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
>     STORED AS 
>       INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
>       OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat';
> insert into t3 
> select * from v1;
> {code}



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