作者:唐辉
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;
![d234666b1a56d293ad9b488a74b197a3.png](https://i-blog.csdnimg.cn/blog_migrate/385ab09f2ce8f69a3214f77ad1ed3db3.jpeg)
![5de84b8ad4e6ab536f6b84f68b7d2903.png](https://i-blog.csdnimg.cn/blog_migrate/bb86300db07d0ca4782c525095d7cd70.jpeg)
在没有进行修改列的情况下进行验证,可以正常执行和查看
COMPUTE INCREMENTAL STATS mykudutest;COMPUTE STATS mykudutest;show table stats mykudutest;
![a7a6b59c0ce6c9df0abc493e876f8a5b.png](https://i-blog.csdnimg.cn/blog_migrate/cda4a0dd58f5bb64d6be1bb9a4fcff4a.jpeg)
当我们修改非主键字段后
ALTER TABLE testkudu CHANGE s2 sss3 string;SELECT * FROM testkudu;
![0f3417e5b3df58d42a524a724730ec20.png](https://i-blog.csdnimg.cn/blog_migrate/24ee2a8d2ef5fc6b6db838c772ea2270.jpeg)
再执行COMPUTE INCREMENTAL STATS 或者COMPUTE STATS就会出现如下异常
![fde1a906c5bdb68cec2d3ae71b21a387.png](https://i-blog.csdnimg.cn/blog_migrate/1f511c67b3f855b786223e82ea1e2f19.jpeg)
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';
![130bac1d82aa44841ad4595665dbbe7c.png](https://i-blog.csdnimg.cn/blog_migrate/00741212df2a0589d7e2454c8b5b0864.jpeg)
然后用得到CD_ID,更新新列名 (sss3是我更改的新列名,最初列名为s2)
![cc53bcce365e42ee3613d2e62a5b8d84.png](https://i-blog.csdnimg.cn/blog_migrate/f5fda97ec47536d55f8a45f811ad7e3c.jpeg)
最后对这个表进行invalidate,再执行compute stats
invalidate metadata mykudutest;compute stats mykudutest;
![7f6be44f2fe352af2dc7fab994b3fbf5.png](https://i-blog.csdnimg.cn/blog_migrate/28212db187ce61ef18ca1fc77e171990.jpeg)
4.总结
经验证,该问题在CDH5.16.1 中有,但是CDH 6.2以及CDH5.14上都没有这个问题,可能是一个regression过程中的一个错误bug。