文中对两个问题进行概述:
CDP平台hive表和impala表关系;
如何确认impala所创建表为普通表还是kudu外部表。
说明:专业术语中并无普通表一说,本文泛指表类型,分为普通表和kudu外部表。

0.ENV
CentOS 7.6;
CDP 7.1.4

问题1:impala可以访问kudu和hive,那我在impala上建了schema,他是仅存在于impala,还是说hive、kudu上也有了?
答:
通过验证,impala中创建普通表和kudu外部表,hive中都会同步生成,impala共用hive元数据。
kudu外部表数据不受Impala管理,元数据存在在hive中,并且删除此表不会将表从其源位置(此处为Kudu)丢弃,相反,它只会去除Impala和Kudu之间的映射。

问题2:我使用impala下的kudu表,如何知道是普通表还是kudu表?
2.1 通过建表语句,可以查询到该表是kudu表还是hive表。
2.2 查询语句
show create table kudu3;
2.3 查询结果
1) 通过hive查询普通表rundba的创建语句:
CREATE EXTERNAL TABLE `rundba`(`id` int,`name` string,`area` string)ROW FORMAT SERDE'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'WITH SERDEPROPERTIES ('field.delim'=',','serialization.format'=',')STORED AS INPUTFORMAT'org.apache.hadoop.mapred.TextInputFormat'OUTPUTFORMAT'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'LOCATION'hdfs://nameservice1/warehouse/tablespace/external/hive/it01.db/it01/rundba'TBLPROPERTIES ('bucketing_version'='2','transient_lastDdlTime'='1624603860')
查询结果显示rundba表为外部表,非kudu外部表。
2) 通过impala查询普通表rundba的创建语句:
CREATE EXTERNAL TABLE it01.rundba (id INT,name STRING,area STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY ','WITH SERDEPROPERTIES ('field.delim'=',', 'serialization.format'=',')STORED AS TEXTFILELOCATION 'hdfs://nameservice1/warehouse/tablespace/external/hive/it01.db/it01/rundba'TBLPROPERTIES ('bucketing_version'='2', 'numFiles'='2', 'numFilesErasureCoded'='0', 'totalSize'='133')
查询结果显示rundba表为外部表,非kudu外部表。
3) 通过hive查询kudu外表的创建语句:
CREATE EXTERNAL TABLE `kudu3`(`key` string COMMENT '',`value` string COMMENT '')ROW FORMAT SERDE'org.apache.hadoop.hive.kudu.KuduSerDe'STORED BY'org.apache.hadoop.hive.kudu.KuduStorageHandler'LOCATION'hdfs://nameservice1/warehouse/tablespace/external/hive/it01.db/kudu3'TBLPROPERTIES ('TRANSLATED_TO_EXTERNAL'='TRUE','external.table.purge'='TRUE','kudu.master_addresses'='cm.rundba.com,nn1.rundba.com,nn2.rundba.com','kudu.table_name'='impala::it01.kudu3','transient_lastDdlTime'='1625113707')
查询结果显示kudu3表为kudu外部表,非普通表。
4) 通过impala查询kudu外表的创建语句:
CREATE EXTERNAL TABLE it01.kudu3 (key STRING NOT NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION,value STRING NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION,PRIMARY KEY (key))PARTITION BY HASH (key) PARTITIONS 16STORED AS KUDUTBLPROPERTIES ('external.table.purge'='TRUE', 'kudu.master_addresses'='cm.rundba.com,nn1.rundba.com,nn2.rundba.com')
查询结果显示kudu3表为kudu外部表,非普通表。

3. 小结
通过部分实验和说明对2个问题进行说明,详见上文。
旨在交流,不足之处,还望抛砖。
作者:王坤,微信公众号:rundba,欢迎转载,转载请注明出处。
如需公众号转发,请联系wx: landnow。
文章转载自rundba,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




