如何使用配置单元jdbc从java代码设置空闲配置单元jdbc连接

如何使用配置单元jdbc从java代码设置空闲配置单元jdbc连接,java,hive,Java,Hive,我在java应用程序中使用HiveJDBC1.0创建与HiveServer的连接并执行查询。我想从java代码设置空闲配置单元连接超时。比如说,用户首先创建配置单元连接,如果配置单元连接在接下来的10分钟内保持空闲,那么这个连接对象应该过期。若用户在10分钟后使用相同的连接对象执行查询,那个么配置单元jdbc应该抛出错误。您能告诉我如何通过java代码实现这一点吗 我知道配置单元中有一个属性hive.server2.idle.session.timeout,但我不知道这是java代码中需要设置的

我在java应用程序中使用HiveJDBC1.0创建与HiveServer的连接并执行查询。我想从java代码设置空闲配置单元连接超时。比如说,用户首先创建配置单元连接,如果配置单元连接在接下来的10分钟内保持空闲,那么这个连接对象应该过期。若用户在10分钟后使用相同的连接对象执行查询,那个么配置单元jdbc应该抛出错误。您能告诉我如何通过java代码实现这一点吗

我知道配置单元中有一个属性hive.server2.idle.session.timeout,但我不知道这是java代码中需要设置的正确属性还是其他属性。我尝试在jdbc连接字符串中设置此属性,但它不起作用

try {
    Class.forName("org.apache.hive.jdbc.HiveDriver");
} catch (ClassNotFoundException e) {
    LOG.error(ExceptionUtils.getStackTrace(e));
}

String jdbcurl = "jdbc:hive2://localhost:10000/idw?hive.server2.idle.session.timeout=1000ms";
Connection con;
con = DriverManager.getConnection(jdbcurl,"root","");

Thread.sleep(3000);
下面我正在使用连接对象,配置单元jdbc应该在这里抛出错误,因为我在3000毫秒后使用了连接对象,但我已将空闲超时设置为1000毫秒,但配置单元jdbc没有抛出错误

ResultSet rs = con.createStatement().executeQuery("select * from idw.emp");

需要此方面的帮助。

hive.server2.idle.session.timeout导致会话在指定的持续时间内未被访问时终止。但是,需要在hive.server2.session.check.interval设置为的情况下指定hive.server2.idle.session.timeout 正值。基本上,我们需要在超时间隔内指定一些会话检查,以使会话关闭

更多详情可在此查看

你看问题的方式不对。这些属性未在URL中设置,如

在Hadoop生态系统中,服务器默认值是在XML配置文件中设置的——在这种情况下是/etc/hive/conf/hive-site.XML和/或hiveserver2-site.XML

会话打开后,可以使用set=语句设置自定义值,该语句与Oracle ALTER会话类似


警告:某些属性在配置文件中定义为final,无法重写。如果有疑问,请咨询Hadoop管理员。

我在连接字符串中使用了这两个配置参数。它不起作用。jdbc:hive2://192.168.145.182:10000/;hive.server2.idle.session.timeout=5000ms;hive.server2.session.check.interval=4000ms@ReenaUpadhyay你找到解决办法了吗?我已经阅读了这个链接,它似乎很有用,但我还没有尝试过。此外,在我的情况下,我的spark应用程序在一些未定义的空闲时间间隔后被终止,没有任何日志指示,一旦它再次启动,我的jboss服务器就无法重新连接到它