连接到 HBase 时,会出现以下消息:
java.lang.NullPointerException
at java.lang.StringBuilder.<init>(StringBuilder.java:92)
at org.apache.hadoop.hbase.zookeeper.ZooKeeperWrapper.getZookeeperClusterKey(ZooKeeperWrapper.java:956)
配置好像有问题。我没有使用 xml 文件进行配置,而是在我的代码中执行此操作。作为记录,这是我的代码的配置部分:
usersTable = new HTable(config, "users");
config.set("hbase.zookeeper.quorum", "student-serv002.test");
我正在使用 Spring DM 从 OSGi 应用程序运行它。
编辑:
第 956 行的源代码如下:
public static String getZookeeperClusterKey(Configuration conf, String name) {
954 String quorum = conf.get(HConstants.ZOOKEEPER_QUORUM.replaceAll(
955 "[\\t\\n\\x0B\\f\\r]", ""));
956 StringBuilder builder = new StringBuilder(quorum);
957 builder.append(":");
958 builder.append(conf.get(HConstants.ZOOKEEPER_ZNODE_PARENT));
959 if (name != null && !name.isEmpty()) {
960 builder.append(",");
961 builder.append(name);
962 }
963 return builder.toString();
964 }
显然,不会读取 quorum 的值。然而,在常规的非 OSGi 应用程序中使用相同的代码不是问题。
编辑:使用不同的方式提供配置似乎有效果。我现在收到以下错误:
java.lang.NullPointerException
at org.apache.hadoop.hbase.client.HConnectionManager$ClientZKWatcher.getZooKeeperWrapper(HConnectionManager.java:231)
马上查源头。