[英]How to set idle Hive jdbc connection out from java code using hive jdbc
我在Java應用程序中使用hive jdbc 1.0創建與hive服務器的連接並執行查詢。 我想從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毫秒后使用了連接對象,但是我將空閑超時設置為1000ms,但是配置單元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。 基本上,我們需要在超時間隔內指定一些會話檢查,以使會話關閉。
您正在以錯誤的方式看問題。 如Hive AdminManual中所述, 未在URL中設置這些屬性。
在Hadoop生態系統中, 服務器默認設置是在XML配置文件中設置的-在這種情況下/etc/hive/conf/hive-site.xml
和/或hiveserver2-site.xml
打開會話后,可以使用set <prop>=<value>
語句(與Oracle ALTER SESSION相似)來設置自定義值 。
注意:某些屬性在配置文件中定義為“最終”,無法覆蓋。 如有疑問,請與Hadoop管理員聯系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.