0611-5.16.1-Kudu表執行COMPUTE STATS 命令異常分析

1.文檔編寫目的


Fayson在CDH5.16.1中對Kudu表使用alter table ... change ...更改kudu表的列名後,用 COMPUTE INCREMENTAL STATS 或者COMPUTE STATS 命令去統計表的信息時,會報字段不存在異常

  • 測試環境

1.CM和CDH版本為5.16.1

2.操作系統版本為RedHat 7.2

2.問題描述


首先創建一個Kudu 表,並插入兩條數據用來測試

CREATE TABLE impala_kudu_test.mykudutest (
col1 INT NOT NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION,
s2 STRING NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION,
PRIMARY KEY (col1)
)
PARTITION BY HASH (col1) PARTITIONS 3 STORED AS KUDU TBLPROPERTIES ('kudu.master_addresses'='cdh3.macro.com:7051');
insert into mykudutest values (1,"test");
insert into mykudutest values (2,"test2");
select * from mykudutest;


0611-5.16.1-Kudu表執行COMPUTE STATS 命令異常分析


0611-5.16.1-Kudu表執行COMPUTE STATS 命令異常分析


在沒有進行修改列的情況下進行驗證,可以正常執行和查看

COMPUTE INCREMENTAL STATS mykudutest;
COMPUTE STATS mykudutest;
show table stats mykudutest;



0611-5.16.1-Kudu表執行COMPUTE STATS 命令異常分析



當我們修改非主鍵字段後

ALTER TABLE testkudu CHANGE s2 sss3 string;
SELECT * FROM testkudu;



0611-5.16.1-Kudu表執行COMPUTE STATS 命令異常分析



再執行COMPUTE INCREMENTAL STATS 或者COMPUTE STATS就會出現如下異常


0611-5.16.1-Kudu表執行COMPUTE STATS 命令異常分析



3.解決辦法


首先登陸到的Hive metastore DB(通常是Mysql數據庫)

select c.* from COLUMNS_V2 c join TBLS t on t.TBL_ID = c.CD_ID join DBS d on d.DB_ID = t.DB_ID where TBL_NAME = 'mykudutest' and d.NAME = 'impala_kudu_test';



0611-5.16.1-Kudu表執行COMPUTE STATS 命令異常分析



然後用得到CD_ID,更新新列名 (sss3是我更改的新列名,最初列名為s2)


0611-5.16.1-Kudu表執行COMPUTE STATS 命令異常分析



最後對這個表進行invalidate,再執行compute stats

invalidate metadata mykudutest;
compute stats mykudutest;



0611-5.16.1-Kudu表執行COMPUTE STATS 命令異常分析



4.總結


經驗證,該問題在CDH5.16.1 中有,但是CDH 6.2以及CDH5.14上都沒有這個問題,可能是一個regression過程中的一個錯誤bug。


分享到:


相關文章: