[
https://issues.apache.org/jira/browse/IMPALA-9337?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17030185#comment-17030185
]
Vihang Karajgaonkar commented on IMPALA-9337:
---------------------------------------------
Hi [~krishahn] Sorry for the delay in the responding. Its been a while I worked
on that patch and I had to test it out myself to confirm. The answer to your
question is yes. You can change an existing external table to a synchronized
kudu table by adding the {{external.table.purge}} property to true. See the
following example below
1. Create an external kudu table with external.table.purge = true
localhost:21000] default> create external table mykudutbl (
> id BIGINT,
> name STRING,
> PRIMARY KEY(id)
> )
> PARTITION BY HASH PARTITIONS 16
> STORED AS KUDU
> TBLPROPERTIES ('external.table.purge'='true');
Query: create external table mykudutbl (
id BIGINT,
name STRING,
PRIMARY KEY(id)
)
PARTITION BY HASH PARTITIONS 16
STORED AS KUDU
TBLPROPERTIES ('external.table.purge'='true')
+-------------------------+
| summary |
+-------------------------+
| Table has been created. |
+-------------------------+
[localhost:21000] default> show create table mykudutbl;
Query: show create table mykudutbl
+------------------------------------------------------------------------------------+
| result |
+------------------------------------------------------------------------------------+
| CREATE EXTERNAL TABLE default.mykudutbl ( |
| id BIGINT NOT NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION, |
| name STRING NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION, |
| PRIMARY KEY (id) |
| ) |
| PARTITION BY HASH (id) PARTITIONS 16 |
| STORED AS KUDU |
| TBLPROPERTIES ('external.table.purge'='true',
'kudu.master_addresses'='localhost') |
+------------------------------------------------------------------------------------+
Fetched 1 row(s) in 0.02s
>>> Set the external.table.purge to false. The table now becomes an external
>>> table (similar to Impala 3.3 or before)
>>> alter table mykudutbl set tblproperties('external.table.purge'='false');
Query: alter table mykudutbl set tblproperties('external.table.purge'='false')
+----------------+
| summary |
+----------------+
| Updated table. |
+----------------+
Fetched 1 row(s) in 0.28s
[localhost:21000] default> show create table mykudutbl;
Query: show create table mykudutbl
+-------------------------------------------------------------------------------------+
| result |
+-------------------------------------------------------------------------------------+
| CREATE EXTERNAL TABLE default.mykudutbl |
| STORED AS KUDU |
| TBLPROPERTIES ('external.table.purge'='false',
'kudu.master_addresses'='localhost') |
+-------------------------------------------------------------------------------------+
Fetched 1 row(s) in 0.00s
>>> Dropping the Impala table does not drop table in Kudu
[localhost:21000] default> drop table default.mykudutbl;
Query: drop table default.mykudutbl
+-------------------------+
| summary |
+-------------------------+
| Table has been dropped. |
+-------------------------+
Fetched 1 row(s) in 0.21s
I can even create a synchronized Kudu table pointing to the Kudu table (note
that the Kudu table name is impala::default.mykudutbl). I think that would be
an uncommon use-case but I can do this:
>>> Create a external table pointing to a existing Kudu table.
create external table mykudtbl2
stored as kudu
tblproperties ('kudu.table_name'='impala::default.mykudutbl');
Query: create external table mykudtbl2
stored as kudu
tblproperties ('kudu.table_name'='impala::default.mykudutbl')
>>> Set the table property to external.table.purge to true. Now this table is a
>>> synchronized external table.
alter table mykudtbl2 set TBLPROPERTIES('external.table.purge'='true');
If I drop the Impala table now, the Kudu table is dropped as well.
> Document the new way to create external Kudu tables from Impala shell
> ---------------------------------------------------------------------
>
> Key: IMPALA-9337
> URL: https://issues.apache.org/jira/browse/IMPALA-9337
> Project: IMPALA
> Issue Type: Documentation
> Affects Versions: Impala 3.4.0
> Reporter: Vihang Karajgaonkar
> Assignee: Kris Hahn
> Priority: Critical
> Labels: doc
>
> IMPALA-9092 added a new way to create external Kudu tables with the purge
> option. I think this could cause some confusion and it would be great to
> document this option.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]