我们的产品使用Phoenix JDBC驱动程序来连接HBase,它在Linux上运行良好。我想在Windows上运行它,但连接失败。
我尝试从IntelliJ Idea的数据库连接,但由于相同的错误而失败。我曾经在Idea中连接到另一个HBase安装,它在7月份在那里工作得很好。但它也失败了,并出现了相同的错误。
2020-11-18 11:36:54,835 [ 119005] INFO - .DatabaseConnectionEstablisher - Connecting to: jdbc:phoenix:dev.internal:2181:/hbase-unsecure
2020-11-18 11:36:57,362 [ 121532] WARN - .DatabaseConnectionEstablisher - Connecting to: jdbc:phoenix:dev.internal:2181:/hbase-unsecure
2020-11-18 11:36:57,364 [ 121534] WARN - .DatabaseConnectionEstablisher - [08004][103] ERROR 103 (08004): Unable to establish connection.
2020-11-18 11:36:57,368 [ 121538] WARN - ic.GenericDatabaseErrorHandler - ERROR 103 (08004): Unable to establish connection.
java.sql.SQLException: ERROR 103 (08004): Unable to establish connection.
at org.apache.phoenix.exception.SQLExceptionCode$Factory$1.newException(SQLExceptionCode.java:542)
at org.apache.phoenix.exception.SQLExceptionInfo.buildException(SQLExceptionInfo.java:150)
at org.apache.phoenix.query.ConnectionQueryServicesImpl.openConnection(ConnectionQueryServicesImpl.java:460)
at org.apache.phoenix.query.ConnectionQueryServicesImpl.access$400(ConnectionQueryServicesImpl.java:292)
at at org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:76)
at org.apache.phoenix.query.ConnectionQueryServicesImpl.init(ConnectionQueryServicesImpl.java:3077)
at org.apache.phoenix.jdbc.PhoenixDriver.getConnectionQueryServices(PhoenixDriver.java:255)
at org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.createConnection(PhoenixEmbeddedDriver.java:142)
at org.apache.phoenix.jdbc.PhoenixDriver.connect(PhoenixDriver.java:221)
Caused by: java.lang.NoSuchMethodError: 'void sun.misc.Unsafe.putLong(java.lang.Object, int, long)'
at org.apache.hadoop.hbase.util.UnsafeAccess.putLong(UnsafeAccess.java:248)
at org.apache.hadoop.hbase.util.Bytes$ConverterHolder$UnsafeConverter.putLong(Bytes.java:1489)
at org.apache.hadoop.hbase.util.Bytes.putLong(Bytes.java:788)
at org.apache.hadoop.hbase.client.ClientIdGenerator.generateClientId(ClientIdGenerator.java:51)
at org.apache.hadoop.hbase.client.PerClientRandomNonceGenerator.<init>(PerClientRandomNonceGenerator.java:37)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.<init>(ConnectionManager.java:698)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.<init>(ConnectionManager.java:649)Idea对sun.misc.Unsafe进行了反编译,结果如下:
@Deprecated
public void putLong(Object o, int offset, long x) {
putLong(o, (long)offset, x);
}环境:
OpenJDK Runtime Environment (build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)Idea中的类路径:

echo %HADOOP_HOME%
C:\dev\core\jdbc\winutils
echo %PATH%
C:\WINDOWS\system32;C:\dev\core\jdbc\winutils\bin;JDBC文件夹:
16.11.2020 17:05 <DIR> winutils
08.07.2020 12:43 20 764 hbase-annotations-1.1.0.jar
08.07.2020 12:43 1 239 829 hbase-client-1.1.0.jar
08.07.2020 12:43 523 263 hbase-common-1.1.0.jar
08.07.2020 12:23 489 884 log4j-1.2.17.jar
17.12.2019 07:12 109 750 805 phoenix-4.15.0-HBase-1.5-client.jar
08.07.2020 12:16 3 074 133 phoenix-core-4.4.0-HBase-1.1.jar
08.07.2020 12:35 55 186 484 phoenix-shaded-4.4.0-HBase-1.1-1.jar
08.07.2020 12:48 533 455 protobuf-java-2.5.0.jar
08.07.2020 12:21 25 962 slf4j-api-1.6.4.jar
08.07.2020 12:21 8 869 slf4j-log4j12-1.7.5.jar
08.07.2020 12:50 792 964 zookeeper-3.4.6.jar如何修复它?
发布于 2021-09-08 14:24:06
我需要在主机名(或IP)之前添加thin:url=http://来解决这个问题。
我在DBeaver Windows客户端也遇到了类似的错误,问题是错误地构造了jdbc URL。我使用的是从Phoenix的安装目录中获得的瘦客户机jar。
如果没有添加,jdbc URL就缺少这一部分。
https://stackoverflow.com/questions/64891859
复制相似问题