操作版本:
1.CM和CDH版本为6.3.0
2.Impala版本为3.2.0
3.hive版本2.1.1
注意点:使用此种方案,前提需要2个集群NameNode 的 Nameservice做了HA设定,否则NameNode主备切换会导致表不可用
需要实现2个CDH集群的hive表和kudu表联查;
比如有A集群上存在表A_TAB和B集群存在B_TAB,步适用Discp情况下如何在A集群上查询使用B_TAB?
第一步: 在A集群创建B_TAB外部表,且location执行B集群的namenode或者kudu Master;
--------hive表
CREATE EXTERNAL TABLE B_TAB (...)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
LOCATION 'hdfs://B集群namenodeIP:8020/user/hive/warehouse/xxx.db/xxx';
--------kudu表在impala上建表
CREATE EXTERNAL TABLE B_TAB (...)
STORED AS KUDU
TBLPROPERTIES (
'kudu.master_addresses' = 'B集群kudu Master IP:7051,B集群kudu Master IP:7051',
'kudu.table_name' = 'impala::B_TAB'
);
第二步:如果使用impala 需要刷新表;如果是分区表需要修复分区。
--分区表时修复分区
msck repair TABLE B_TAB
---impala查询时执行
invalidate metadata B_TAB;
第三步:A集群上查询B_TAB
select * from A_TAB join B_TAB on ...