You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "cheng yong (Jira)" <ji...@apache.org> on 2020/07/23 05:22:00 UTC
[jira] [Updated] (HIVE-23902) SemanticException: not find table in
genColumnStatsTask when compile a sql
[ https://issues.apache.org/jira/browse/HIVE-23902?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
cheng yong updated HIVE-23902:
------------------------------
Description:
Error: Error while compiling statement: FAILED: SemanticException Can not find test.test3 in genColumnStatsTask (state=42000,code=40000)
{code:java}
explain insert into table test.test3 partition(p1 = 'p1', p2 = 'p2')
select p1_name,
indic_id,
indic_name,
case when indic_id in ('101','102') then cast(cast(indic_value as double) as string)
else cast(cast(indic_value as bigint) as string) end as indic_value,
dod
from
(select 'p1' as p1_name,
c.indic_id,
case when c.indic_id = '101' then 'a101'
end as indic_name,
c.indic_array[0] as indic_value,
c.indic_array[1] dod
from (select b.indic_id, b.indic_array
from (select c1,
c2
from test.test1
where p1 = 'p1' and p2='p1'
) a
lateral view explode(map('101', array(c1,c2))
) b as indic_id, indic_array
) c
union all
select 'p1' as p1_name,
c2.indic_id,
case when c2.indic_id = '102' then 'a102'
end as indic_name,
c2.indic_array[0] as indic_value,
c2.indic_array[1] dod
from (select b.indic_id, b.indic_array
from (select c3,
c4
from test.test2
where p1 = 'p1' and p2='p2'
) a
lateral view explode(map('102', array(c3,c4))
) b as indic_id, indic_array
) c2
) tt
;
{code}
I try to change GenMapRedUtils.java,the error disappear,but I don't know if this modification is correct。(row:1887)
{code:java}
if ((srcDir != null) && srcDir.equals(fsopFinalDir)) {
return mvTsk;
// if ((srcDir != null) && srcDir.equals(fsopFinalDir)) {
if (srcDir != null && fsopFinalDir!=null) {
if(srcDir.equals(fsopFinalDir)){
return mvTsk;
}else if(fsopFinalDir.getParent().equals(srcDir)){
return mvTsk;
}
}
{code}
create table sql:
{code:java}
CREATE TABLE `test.test1`(
`c1` bigint,
`c2` double)
PARTITIONED BY (
`p1` string,
`p2` 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'
CREATE TABLE `test.test2`(
`c3` bigint,
`c4` double)
PARTITIONED BY (
`p1` string,
`p2` 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';
CREATE TABLE `test.test3`(
`p1_name` string,
`indic_id` string,
`indic_name` string,
`indic_value` string,
`dod` string)
PARTITIONED BY (
`p1` string,
`p2` 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';
{code}
was:
explain insert into table test.test3 partition(p1 = 'p1', p2 = 'p2')
select p1_name,
indic_id,
indic_name,
case when indic_id in ('101','102') then cast(cast(indic_value as double) as string)
else cast(cast(indic_value as bigint) as string) end as indic_value,
dod
from
(select 'p1' as p1_name,
c.indic_id,
case when c.indic_id = '101' then 'a101'
end as indic_name,
c.indic_array[0] as indic_value,
c.indic_array[1] dod
from (select b.indic_id, b.indic_array
from (select c1,
c2
from test.test1
where p1 = 'p1' and p2='p1'
) a
lateral view explode(map('101', array(c1,c2))
) b as indic_id, indic_array
) c
union all
select 'p1' as p1_name,
c2.indic_id,
case when c2.indic_id = '102' then 'a102'
end as indic_name,
c2.indic_array[0] as indic_value,
c2.indic_array[1] dod
from (select b.indic_id, b.indic_array
from (select c3,
c4
from test.test2
where p1 = 'p1' and p2='p2'
) a
lateral view explode(map('102', array(c3,c4))
) b as indic_id, indic_array
) c2
) tt
;
Error: Error while compiling statement: FAILED: SemanticException Can not find test.test3 in genColumnStatsTask (state=42000,code=40000)
I try to change GenMapRedUtils.java,the error disappear,but I don't know if this modification is correct。
ru:1887
if ((srcDir != null) && srcDir.equals(fsopFinalDir)) {
return mvTsk;
// if ((srcDir != null) && srcDir.equals(fsopFinalDir)) {
if (srcDir != null && fsopFinalDir!=null) {
if(srcDir.equals(fsopFinalDir)) {
return mvTsk;
} else if(fsopFinalDir.getParent().equals(srcDir)) {
return mvTsk;
}
}
create table sql:
CREATE TABLE `test.test1`(
`c1` bigint,
`c2` double)
PARTITIONED BY (
`p1` string,
`p2` 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'
CREATE TABLE `test.test2`(
`c3` bigint,
`c4` double)
PARTITIONED BY (
`p1` string,
`p2` 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';
CREATE TABLE `test.test3`(
`p1_name` string,
`indic_id` string,
`indic_name` string,
`indic_value` string,
`dod` string)
PARTITIONED BY (
`p1` string,
`p2` 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';
> SemanticException: not find table in genColumnStatsTask when compile a sql
> ---------------------------------------------------------------------------
>
> Key: HIVE-23902
> URL: https://issues.apache.org/jira/browse/HIVE-23902
> Project: Hive
> Issue Type: Bug
> Environment: hadoop3.2.1+hive3.1.2
> Reporter: cheng yong
> Priority: Major
>
> Error: Error while compiling statement: FAILED: SemanticException Can not find test.test3 in genColumnStatsTask (state=42000,code=40000)
>
> {code:java}
> explain insert into table test.test3 partition(p1 = 'p1', p2 = 'p2')
> select p1_name,
> indic_id,
> indic_name,
> case when indic_id in ('101','102') then cast(cast(indic_value as double) as string)
> else cast(cast(indic_value as bigint) as string) end as indic_value,
> dod
> from
> (select 'p1' as p1_name,
> c.indic_id,
> case when c.indic_id = '101' then 'a101'
> end as indic_name,
> c.indic_array[0] as indic_value,
> c.indic_array[1] dod
> from (select b.indic_id, b.indic_array
> from (select c1,
> c2
> from test.test1
> where p1 = 'p1' and p2='p1'
> ) a
> lateral view explode(map('101', array(c1,c2))
> ) b as indic_id, indic_array
> ) c
> union all
> select 'p1' as p1_name,
> c2.indic_id,
> case when c2.indic_id = '102' then 'a102'
> end as indic_name,
> c2.indic_array[0] as indic_value,
> c2.indic_array[1] dod
> from (select b.indic_id, b.indic_array
> from (select c3,
> c4
> from test.test2
> where p1 = 'p1' and p2='p2'
> ) a
> lateral view explode(map('102', array(c3,c4))
> ) b as indic_id, indic_array
> ) c2
> ) tt
> ;
> {code}
>
>
> I try to change GenMapRedUtils.java,the error disappear,but I don't know if this modification is correct。(row:1887)
>
> {code:java}
> if ((srcDir != null) && srcDir.equals(fsopFinalDir)) {
> return mvTsk;
> // if ((srcDir != null) && srcDir.equals(fsopFinalDir)) {
> if (srcDir != null && fsopFinalDir!=null) {
> if(srcDir.equals(fsopFinalDir)){
> return mvTsk;
> }else if(fsopFinalDir.getParent().equals(srcDir)){
> return mvTsk;
> }
> }
>
> {code}
>
>
> create table sql:
> {code:java}
> CREATE TABLE `test.test1`(
> `c1` bigint,
> `c2` double)
> PARTITIONED BY (
> `p1` string,
> `p2` 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'
> CREATE TABLE `test.test2`(
> `c3` bigint,
> `c4` double)
> PARTITIONED BY (
> `p1` string,
> `p2` 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';
> CREATE TABLE `test.test3`(
> `p1_name` string,
> `indic_id` string,
> `indic_name` string,
> `indic_value` string,
> `dod` string)
> PARTITIONED BY (
> `p1` string,
> `p2` 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';
> {code}
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)