以下记录自己使用KUDU中的使用问题及解决方法:
官方文档:https://kudu.apache.org/docs/administration.html
目录
1)使用CM界面安装kudu服务后,impala建表时报错:
1. Kudu主键
Kudu存在主键,创建表时两种方式标明主键:
方式一
CREATE TABLE testa(
id int,
name string,
salary double,
PRIMARY key (id )
)
stored as kudu
方式二
CREATE TABLE testb(
id int PRIMARY KEY,
name string,
salary double
)
stored as kudu
主键报错:
Columns with DOUBLE, FLOAT, or BOOL types are not allowed as part of a primary key definition. Additionally, all columns that are part of a primary key definition must be NOT NULL.
double、float、bool类型字段不能作为主键列,同时主键列不能为null
- 表创建后,主键不能修改。必须删除重建表指定新的主键。
- 主键列必须在非主键列之前
- 主键列的值不能使用UPDATE函数修改。如果要修改主键的值只能删除该行重新插入。
- DOUBLE、FLOAT或BOOL类型的列不能作为主键,此外,主键列必须为NOT NULL。
- 不支持自动生成的主键(如自增列)
- 组合主键的所有列在编码后,大小不能大于16K
2. Kudu更新数据
kudu是根据主键进行数据更新的,如果待插入的数据和表里的数据主键相同, 那么这条记录将不会插入。只能使用update更新操作。
3. KUDU服务安装
1)使用CM界面安装kudu服务后,impala建表时报错:
ERROR: AnalysisException: Table property 'kudu.master_addresses' is required when the impalad startup flag -kudu_master_hosts is not used.
解决方法:
Impala配置中更改impala服务范围为kudu,重启impala即可。
2)Kudu tablet server的重启问题
Kudu 的tablet某一个失败后,通过CDH只重启改 tablet server即可。
4. KUDU Master多节点配置
见历史文章 kudu master多节点配置
5.KUDU不支持truancate命令
对于kudu表,需要drop后重新建立,速度也很快。