我正在使用Spring Boot开发一个微服务,并使用Phoenix瘦驱动程序查询HBase表。
我想将超时设置为2分钟,但设置被忽略:
Properties prop = new Properties();
prop.put(HConstants.HBASE_RPC_TIMEOUT_KEY, "120000");
prop.put(HConstants.HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD, "120000");
prop.put(HConstants.HBASE_RPC_READ_TIMEOUT_KEY, "120000");
prop.put(HConstants.HBASE_CLIENT_RETRIES_NUMBER, "3");
Connection connection = DriverManager.getConnection("jdbc:phoenix:thin:url=http://localhost:8765;serialization=PROTOBUF", prop);
为了测试这个场景,我启动了Phoenix查询服务器,但没有启动HBase服务器。之后,我通过Phoenix向HBase查询,等待2分钟后的超时,但这并没有发生。
也许有一种不同的方法可以使Phoenix查询超时。如果是的话,我将非常感谢你的建议
事先非常感谢。
你试过设置吗
phoenix.query.timeoutMs Client-side property specifying the number of milliseconds after which a query will timeout on the client.
默认值为10分钟600000
props.setProperty(QueryServices.THREAD_TIMEOUT_MS_ATTRIB,"600000");
此处记录:https://phoenix.apache.org/tuning.html
QueryServices.java在这里:https://github.com/apache/phoenix/blob/master/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java
嗨,Ramachandran,非常感谢您的回答。
我尝试了你的建议,超时值为10秒,但超时没有触发。
props.setProperty(QueryServices.THREAD_TIMEOUT_MS_ATTRIB,"10000");
Connection connection = DriverManager.getConnection("jdbc:phoenix:thin:url=http://localhost:8765;serialization=PROTOBUF", props);
我的测试场景与最初问题中描述的场景相似。
我认为问题是Phoenix查询服务器长时间试图连接到HBase,也许这就是驱动程序没有触发超时的原因。
也许在Phoenix查询服务器上需要进行一些配置。
你知道可能会发生什么吗
再次非常感谢你的帮助。