如何使用hive jdbc从java代码中设置空闲的Hive jdbc连接

时间:2015-11-30 07:48:13

标签: java hive

我在我的java应用程序中使用hive jdbc 1.0来创建与hive服务器的连接并执行查询。我想从java代码设置空闲的hive连接超时。比方说,用户首先创建配置单元连接,如果配置单元连接在接下来的10分钟内保持空闲状态,则此连接对象应该过期​​。如果用户在10分钟后使用同一个连接对象执行查询,那么hive jdbc应该抛出错误。能告诉我通过java代码实现这一目标的方法。

我知道hive中有一个属性DealHand(),但我不知道这是否是从java代码设置所需的正确属性,或者还有其他属性。我尝试在jdbc连接字符串中设置此属性,但它没有用。

hive.server2.idle.session.timeout

现在我正在使用连接对象,hive jdbc应该在这里抛出错误,因为我在3000毫秒后使用了连接对象,但是我将空闲超时设置为1000毫秒但是hive 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);

需要帮助。

2 个答案:

答案 0 :(得分:0)

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

可在此处查看更多详细信息 https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties#ConfigurationProperties-hive.server2.session.check.interval

答案 1 :(得分:-1)

你正在以错误的方式看问题。这些属性在网址中设置,如Hive AdminManual ...

中所述

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

会话打开后,您可以使用set <prop>=<value>语句(有点类似于Oracle ALTER SESSION)设置自定义值

警告:一些属性被定义为&#34; final&#34;在配置文件中,无法覆盖。如果有疑问,请咨询您的Hadoop管理员。