我在服务器(Remote)中安装了独立的HBase。
我编写了一个使用Phoenix进行通信的Java客户端,看到它试图进行36次尝试,因此抛出异常。
update Tatkal_Merge set [br_complete_qc]='Y',br_complete_Qc_date=GETDATE() where act_no in (
select act_no
FROM [Tatkal].[dbo].[Tatkal_Merge]
where [br_complete_qc]='N' and
data_date+br_code not in (select distinct data_date+br_code FROM [Tatkal].[dbo].[Tatkal_Merge] where pin_scan='N')
)
的ConnectionString:
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");
有人可以帮助我......!
答案 0 :(得分:3)
根据我的经验,这通常发生在您在扫描仪上获得超时时。在你的情况下,这似乎是真的,你的错误信息中的b / c也是如此:
callTimeout = 60000,callDuration = 80992
意味着当你的超时是一分钟时你继续了81秒。查询HBase时,您需要确保使用的是rowkey或更新版本的phoenix,即时间戳。任何其他HBase查询都将是非常低效的。你可以尝试一些事情:
再次,更改您的查询以使用现有的rowkey。在我们拥有的一个表中,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来优化您的凤凰查询。这是一个高级主题,但对所有HBase查询都是如此。 HBase擅长于一件事,而且它正在查询其强大的索引:rowkey。使用凤凰并没有缓解这个问题。
顺便说一下,从堆栈溢出的角度来看,如果你发布一些关于你的查询和表结构的信息,它会有所帮助。
答案 1 :(得分:2)
那么它的内部ip映射错误,
任何人,努力首先向服务器推送请求,请确保主机字符串已配置。 Modifying host here