我在我的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);
需要帮助。
答案 0 :(得分:0)
hive.server2.idle.session.timeout会导致会话在指定的持续时间内未被访问时终止。但是,hive.server2.idle.session.timeout需要在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管理员。