在以往认知中,impala删除kudu外表,kudu中表信息并未删除,但在cloudera环境下,impala删除kudu外表,kudu表信息也同步删除,下文进行演示。
测试环境
CDP 7.1.4;
impala 3.4.0;
kudu 1.12.0;
使用kerberos加密。
1) impala创建kudu外表
CREATE TABLE it01.product_etl_kd (
key STRING,
cdotypeid INTEGER,
changecount INTEGER,
iconid INTEGER,
objectcategory STRING,
productbaseid STRING,
productname STRING,
revofrcdid STRING,
PRIMARY KEY (key)
)
PARTITION BY HASH (key) PARTITIONS 6
STORED AS KUDU;
2) show tables查询product_etl_kd存在
show tables;
name |
--------------+
kudu1 |
kudu3 |
kudu5 |
product_etl_kd|
rundba |
t1 |
3) 查看建表语句,显示当前为外部表
show create table it01.product_etl_kd;
显示建表语句:
CREATE EXTERNAL TABLE it01.product_etl_kd (
key STRING NOT NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION,
cdotypeid INT NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION,
changecount INT NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION,
iconid INT NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION,
objectcategory STRING NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION,
productbaseid STRING NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION,
productname STRING NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION,
revofrcdid STRING NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION,
PRIMARY KEY (key)
)
PARTITION BY HASH (key) PARTITIONS 6
STORED AS KUDU
TBLPROPERTIES ('external.table.purge'='TRUE', 'kudu.master_addresses'='cm.rundba.com,nn01.rundba.com,nn02.rundba.com')
虽然create table没有external参数,但实际创建的为kudu外部表。
4) 查询kudu表
xshell登录master主机,查询kudu下面it01数据库下有哪些表
[root@cm ~]# kudu table list cm.rundba.com | grep it01
impala::it01.kudu3
impala::it01.product_etl_kd
impala::it01.kudu5
impala::it01.kudu1
当前kudu表已经生成,it01.product_etl_kd,且是impala类型。
impala删除表product_etl_kd
drop table it01.product_etl_kd;
此时kudu中也删除了product_etl_kd表
[root@yw-cm ~]# kudu table list yw-cm.rundba.com | grep it01
impala::it01.kudu5
impala::it01.kudu1
impala::it01.kudu3
通过实验,使用Impala删除Kudu外表时,kudu表也同步删除,和kudu官网信息稍有出入,可能CDP集成自动同步功能,以实验为准。
impala删除kudu表官方信息:
如果该表是在Impala中作为内部表创建的,则使用CREATE TABLE,标准DROP TABLE语法会删除底层Kudu表及其所有数据。
如果表是作为外部表创建的,则使用CREATE EXTERNAL TABLE,Impala和Kudu之间的映射将被删除,但 Kudu 表及其所有数据保持不变。
https://kudu.apache.org/docs/release_notes.html
https://kudu.apache.org/docs/kudu_impala_integration.html