创建kudu表_06115.16.1Kudu表执行COMPUTE STATS 命令异常分析

在CDH5.16.1环境下,修改Kudu表列名后,执行COMPUTE STATS命令会出现字段不存在异常。解决办法是通过Hive metastore DB更新列名信息并刷新表状态,此问题在CDH6.2和5.14中不存在,可能是版本 regression 错误。
摘要由CSDN通过智能技术生成

作者:唐辉

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;

263ff7c0b3e74d3460af5dde1ba29fda.png

abd4fc933d6162b1fa6882c6fee0ef0d.png

在没有进行修改列的情况下进行验证,可以正常执行和查看

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

0bf45779af82dc3b0f6c26d049187c4e.png

当我们修改非主键字段后

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

7f043ae368e9ee7c63e8862051714f31.png

再执行COMPUTE INCREMENTAL STATS 或者COMPUTE STATS就会出现如下异常

c786c03cfc8be0d1f908cae985d16689.png

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';

59b15b4f01c93dcaee2009a7fe4b85f9.png

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

87d656782df510b7868edae991a29560.png

最后对这个表进行invalidate,再执行compute stats

invalidate metadata mykudutest;
compute stats mykudutest;

c5272fb2089f3ac26da1cf4a6476e30f.png

4

总结

经验证,该问题在CDH5.16.1 中有,但是CDH 6.2以及CDH5.14上都没有这个问题,可能是一个regression过程中的一个错误bug。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值