[
https://issues.apache.org/jira/browse/HIVE-24086?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Naveen Gangam updated HIVE-24086:
---------------------------------
Description:
when you execute something like
create table ctas_table as select * from mgd_table;
if mgd_table is a managed table, the hive query planner creates a plan with
ctas_table as a managed table, so the location is set to something in the
managed warehouse directory.
However with HMS translation enabled, non-acid MANAGED tables are converted to
EXTERNAL with purge set to true. So the table location for this table is
altered to be in the external warehouse directory.
But after the table creation, the rest of the query executes but the data is
copied to the location set in the query plan. As a result when you execute a
select from ctas_table, it will not return any results because that location is
empty.
Workarounds:
1) if hive.create.as.acid=true, or hive.create.as.insert.only=true, this
ctas_table remains a MANAGED acid table and HMS does not translate the table to
an EXTERNAL table.
2) Instead of a create table as select, use
a) Create EXTERNAL table ctas_table as select * from mgd_table to make the
target table an external table
OR
b) Create transactional table ctas_table as select * from mgd_table to make
the target table an managed acid table.
was:
when you execute something like
create table ctas_table as select * from mgd_table;
if mgd_table is a managed table, the hive query planner creates a plan with
ctas_table as a managed table, so the location is set to something in the
managed warehouse directory.
However with HMS translation enabled, non-acid MANAGED tables are converted to
EXTERNAL with purge set to true. So the table location for this table is
altered to be in the external warehouse directory.
But after the table creation, the rest of the query executes but the data is
copied to the location set in the query plan. As a result when you execute a
select from ctas_table, it will not return any results because that location is
empty.
> CTAS with HMS translation enabled returns empty results.
> --------------------------------------------------------
>
> Key: HIVE-24086
> URL: https://issues.apache.org/jira/browse/HIVE-24086
> Project: Hive
> Issue Type: Bug
> Components: Hive
> Reporter: Naveen Gangam
> Assignee: Naveen Gangam
> Priority: Major
>
> when you execute something like
> create table ctas_table as select * from mgd_table;
> if mgd_table is a managed table, the hive query planner creates a plan with
> ctas_table as a managed table, so the location is set to something in the
> managed warehouse directory.
> However with HMS translation enabled, non-acid MANAGED tables are converted
> to EXTERNAL with purge set to true. So the table location for this table is
> altered to be in the external warehouse directory.
> But after the table creation, the rest of the query executes but the data is
> copied to the location set in the query plan. As a result when you execute a
> select from ctas_table, it will not return any results because that location
> is empty.
> Workarounds:
> 1) if hive.create.as.acid=true, or hive.create.as.insert.only=true, this
> ctas_table remains a MANAGED acid table and HMS does not translate the table
> to an EXTERNAL table.
> 2) Instead of a create table as select, use
> a) Create EXTERNAL table ctas_table as select * from mgd_table to make the
> target table an external table
> OR
> b) Create transactional table ctas_table as select * from mgd_table to
> make the target table an managed acid table.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)