java - 无法使用 jdbc 通过 phoenix 连接到 HBase。错误 NONODE,代码 101

标签 java hbase apache-phoenix

我尝试使用代码通过jdbc连接到phoenix

Connection r = DriverManager.getConnection("jdbc:phoenix:serverName:8765/hbase");

执行错误

java.sql.SQLException: java.lang.RuntimeException: java.lang.NullPointerException

    at org.apache.phoenix.query.ConnectionQueryServicesImpl$13.call(ConnectionQueryServicesImpl.java:2432)
    at org.apache.phoenix.query.ConnectionQueryServicesImpl$13.call(ConnectionQueryServicesImpl.java:2352)
    at org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:76)
    at org.apache.phoenix.query.ConnectionQueryServicesImpl.init(ConnectionQueryServicesImpl.java:2352)
    at org.apache.phoenix.jdbc.PhoenixDriver.getConnectionQueryServices(PhoenixDriver.java:232)
    at org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.createConnection(PhoenixEmbeddedDriver.java:147)
    at org.apache.phoenix.jdbc.PhoenixDriver.connect(PhoenixDriver.java:202)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:270)
    at myfunction
Caused by: java.lang.RuntimeException: java.lang.NullPointerException
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:208)
    at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:320)
    at org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:295)
    at org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:160)
    at org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:155)
    at org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:821)
    at org.apache.hadoop.hbase.MetaTableAccessor.fullScan(MetaTableAccessor.java:602)
    at org.apache.hadoop.hbase.MetaTableAccessor.tableExists(MetaTableAccessor.java:366)
    at org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:392)
    at org.apache.phoenix.query.ConnectionQueryServicesImpl$13.call(ConnectionQueryServicesImpl.java:2378)
    ... 36 more
Caused by: java.lang.NullPointerException
    at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.getMetaReplicaNodes(ZooKeeperWatcher.java:395)
    at org.apache.hadoop.hbase.zookeeper.MetaTableLocator.blockUntilAvailable(MetaTableLocator.java:553)
    at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:61)
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateMeta(ConnectionManager.java:1186)
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1153)
    at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:300)
    at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:155)
    at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:59)
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:200)
    ... 45 more

在 ZooKeeper 中我发现了另一个被忽略的异常:

org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode

此异常是由响应错误101产生的

org.apache.zookeeper.KeeperException.create(KeeperException.java:111)
org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
org.apache.zookeeper.ZooKeeper.getChildren(ZooKeeper.java:1472)
org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getChildren(RecoverableZooKeeper.java:295)
org.apache.hadoop.hbase.zookeeper.ZKUtil.listChildrenNoWatch(ZKUtil.java:635)
org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.getMetaReplicaNodes(ZooKeeperWatcher.java:392)
org.apache.hadoop.hbase.zookeeper.MetaTableLocator.blockUntilAvailable(MetaTableLocator.java:553)
org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:61)
org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateMeta(ConnectionManager.java:1186)
org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1153)
 org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:300)
 org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:155)
 org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:59)
 org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:200)
 org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:320)
 org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:295)
 org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:160)
 org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:155)
 org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:821)
 org.apache.hadoop.hbase.MetaTableAccessor.fullScan(MetaTableAccessor.java:602)
 org.apache.hadoop.hbase.MetaTableAccessor.tableExists(MetaTableAccessor.java:366)
 org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:392)
 org.apache.phoenix.query.ConnectionQueryServicesImpl$13.call(ConnectionQueryServicesImpl.java:2378)
 org.apache.phoenix.query.ConnectionQueryServicesImpl$13.call(ConnectionQueryServicesImpl.java:2352)
 org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:76)
 org.apache.phoenix.query.ConnectionQueryServicesImpl.init(ConnectionQueryServicesImpl.java:2352)
 org.apache.phoenix.jdbc.PhoenixDriver.getConnectionQueryServices(PhoenixDriver.java:232)
 org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.createConnection(PhoenixEmbeddedDriver.java:147)
 org.apache.phoenix.jdbc.PhoenixDriver.connect(PhoenixDriver.java:202)
 java.sql.DriverManager.getConnection(DriverManager.java:664)
 java.sql.DriverManager.getConnection(DriverManager.java:270)

驱动程序版本4.9.0-HBase-1.1

来自 Hbase shell 1.1.2.2.5.0.0-1245 的版本

PS:我可以使用 HBase 客户端 API 直接连接到 Hbase

最佳答案

连接字符串有错误。

应该是jdbc:phoneix[:zk_quorum][:zk_port][:zk_hbase_path]

就我而言jdbc:phoenix:zookeperServerName:2181:/hbase-unsecure

关于java - 无法使用 jdbc 通过 phoenix 连接到 HBase。错误 NONODE,代码 101,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41589017/

相关文章:

hadoop - Hbase 和 Phoenix 无法映射整数

java - Apache 凤凰java.lang.OutOfMemoryError : unable to create new native thread

用于解析的java原生JSON api

java - 无法创建枚举

java - HBase "Failed to identify the fs of dir"

java - 如何通过修改org.apache.hadoop.hbase.mapreduce.RowCounter处理hbase中的海量数据?

ubuntu - HBaseClient : The znode for the -ROOT- region doesn't exist

hadoop - 在phoenix for hbase 中,插入90000 行数据时插入OOM

java - View 中的 OnTouchListener - Android

java - 如果 HTML 代码没有更改,如何检查图像是否已更改?