jdbc phoenix驱动程序,重试36次并引发异常

6ss1mwsb  于 2021-06-10  发布在  Hbase
关注(0)|答案(2)|浏览(570)

我在服务器(远程)中安装了一个独立的hbase。我编写了一个java客户机,它使用phoenix进行通信,看到它尝试了36次,因此抛出异常。

HBase-Version : 1.1.5
Phoenix-core: 4.8.0-HBase-1.1

连接字符串:

Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");
Connection connection = DriverManager.getConnection("jdbc:phoenix:192.168.1.xxx:2181");

我是不是漏掉了什么,cz,根本没有联系。
例外情况:

Exception in thread "main" java.sql.SQLException: org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after attempts=36, exceptions:
Mon Oct 17 11:50:18 IST 2016, null, java.net.SocketTimeoutException: callTimeout=60000, callDuration=80992: row 'SYSTEM:CATALOG,,' on table 'hbase:meta' at region=hbase:meta,,1.1588230740, hostname=HOSTNAME,16201,1476683863488, seqNum=0

有人能帮帮我吗。。!

mutmk8jj

mutmk8jj1#

它的内部ipMap错误,
任何人,首先将请求推送到服务器,请确保已配置主机字符串。在此处修改主机

fykwrbwg

fykwrbwg2#

根据我的经验,这通常发生在扫描仪超时的时候。在您的情况下,这似乎是真的,以及b/c在您的错误消息中说:
calltimeout=60000,callduration=80992
也就是说,当你的超时时间是一分钟的时候,你还坚持了81秒。在查询hbase时,您需要确保使用的是rowkey或phoenix的较新版本,以及时间戳。任何其他的hbase查询都会非常低效。您可以尝试以下几点:
尝试将hbase超时设置为一个高得离谱的数字,比如4小时
同样,将查询更改为使用现有行键。在一个表中,rowkey的第一个字符是0-9,因此我们将运行以下命令:

select * from TABLE WHERE ROWKEY like '0%' AND [other_conditions]
select * from TABLE WHERE ROWKEY like '1%' AND [other_conditions]
etc...

然后把结果加起来,或者如果我们正在计算,只需乘以10个b/c,这对于我们的目的来说已经足够了
最后,您可能需要编写一个更好的rowkey来优化phoenix查询。这是一个更高级的主题,但所有hbase查询都是如此。hbase擅长一件事,那就是查询它的一个强大索引:rowkey。使用Phoenix城并不能缓解这个问题。
顺便说一句,从堆栈溢出的Angular 来看,如果您发布一些关于查询和表结构的信息,会有所帮助。

相关问题