背景:因为感觉有的表数据量不是很大,hash分区给到16个不合理,而且,在mysqlbinlog、PG CDC kafka 方式实时录入kudu,磁盘IO很高,怀疑是这个问题,就将表重建 hash分区给到4个。
然鹅,在操作过程中遇到一些问题,起初建表都是直接impala 建的内部表,更改表名的时候一直不给通过。下面给一个详细步骤,一步都不能少。
1、将内部表更改为外部表(impala 操作)
alter table ods_old_table_name set tblproperties('EXTERNAL'='true');
2、更改表名(impala操作)
ALTER TABLE ods_old_table_name rename to ods_new_table_name;
3、查看新表的建表语句,必须执行(impala操作)
show create table ods_new_table_name;
4、更改kudu 里面imala::kudu表名(kudu master服务器操作)
kudu table rename_table master2 impala::kudu.ods_old_table_name impala::kudu.ods_new_table_name
5、更改impala 建表语句中的kudu.name(impala操作)
alter table ods_new_table_nameset set tblproperties('kudu.table_name'='impala::kudu.ods_new_table_name');
6、更改回表为内部表(impala操作)
alter table ods_new_table_name set tblproperties('EXTERNAL'='false');