通过Java API访问Kudu时报NoLeaderFoundException错误,是找不到master节点中的leader角色,一般应该将Kudu中所有的master节点都写进代码中,但若还是报这个错误的话,就是写的格式有问题。
KuduClient client
= new KuduClient.KuduClientBuilder("192.168.1.10,192.168.1.11,192.168.1.12").build();
KuduSession session
= client
.newSession(SessionConfiguration
.FlushMode
.MANUAL_FLUSH
);
session
.setFlushMode(FKConf
.mode
);
session
.setMutationBufferSpace(10000);
session
.setFlushInterval(1000);
这个时候可以通过kudu命令行来查看一下,我这里使用是impala连接的Kudu,在命令行中使用show create table查看表的建表结构,从TBLPROPERTIES中可以查看到master地址,代码中的必须与TBLPROPERTIES一致,TBLPROPERTIES是主机名,代码中也必须是主机名,TBLPROPERTIES中是IP,代码中也必须是IP。
PARTITION BY HASH (id
) PARTITIONS
3
STORED
AS KUDU
TBLPROPERTIES
('kudu.master_addresses'='master01,master02,master03')