连接HBase时触发java.lang.NumberFormatException异常的解决方法
解决HBase配置中的NumberFormatException问题
嘿,我一眼就看出问题出在哪了——你这是把ZooKeeper的端口号错误地塞进了hbase.zookeeper.quorum配置里,还触发了框架的格式问题,导致ZooKeeper解析连接字符串时翻车了!
直接解决方案
按照下面的步骤修改你的配置代码:
- 第一步:修正ZooKeeper集群地址,只保留IP,去掉端口号:
String ZOOKEPER_QORUM_NODE = "172.31.17.251,172.31.17.252,172.31.17.253"; - 第二步:如果你的ZooKeeper用的不是默认端口2181,单独配置端口(用默认值的话这步可以跳过):
new HBaseGraphConfiguration() .set("hbase.zookeeper.quorum", ZOOKEPER_QORUM_NODE) .set("hbase.zookeeper.property.clientPort", "2181");
为什么会出这个问题?
HBase的hbase.zookeeper.quorum配置项只负责指定ZooKeeper集群的节点IP地址,端口是靠独立的hbase.zookeeper.property.clientPort配置项来设置的(默认就是2181)。
你把端口和IP写在一起后,HBase处理配置时错误地给整个字符串套上了方括号(从你的控制台输出里能看到connectString=[xxx]),ZooKeeper的连接字符串解析器会把2181]当成端口来解析——这字符串里带个方括号尾巴,肯定转不成整数,直接就抛出NumberFormatException了。
去掉端口号后,框架会正确生成不带方括号的连接字符串,解析器就能正常识别每个ZooKeeper节点啦。
内容的提问来源于stack exchange,提问作者Litchy
相关产品推荐
相关产品推荐

