簡體   English   中英

使用java使用語句類的單個execute()方法執行多個hive查詢

[英]Execute multiple hive queries using single execute() method of statement class using java

我正在使用 Java API 訪問 HiveServer2,我需要在對 statements 類的execute()方法的單個調用中執行多個 hive 查詢。 是否可以在一次調用execute()方法中提交多個 hive 查詢。 我有配置單元屬性設置為:

SET hive.exec.max.created.files=200000;
SET hive.exec.compress.output=true;
SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
SET hive.exec.dynamic.partition = true; 
SET hive.exec.dynamic.partition.mode = nonstrict; 
set hive.exec.max.dynamic.partitions=5000;
set hive.exec.max.dynamic.partitions.pernode=5000; 
              .
              .
Statement stmt = con.createStatement();
stmt.execute("SET hive.exec.max.created.files=200000");
              .
              .

為此,我現在使用execute()方法一次設置一個這些屬性。 有什么方法可以通過在一次調用execute()方法中執行所有上述語句來設置所有這些屬性。
預期:

stmt.execute("SET hive.exec.max.created.files=200000;
    SET hive.exec.dynamic.partition = true; 
    SET hive.exec.dynamic.partition.mode = nonstrict; 
    set hive.exec.max.dynamic.partitions=5000;
    set hive.exec.max.dynamic.partitions.pernode=5000;");


謝謝。

答案是大不。 您不能在單個 execute() 方法中執行多個查詢。 為什么你不能在像下面這樣的 for 循環中做同樣的事情

String[] queries = new String[] {"SET hive.exec.dynamic.partition = true", "set hive.exec.max.dynamic.partitions=5000"}; //and so on

Statement stmt = con.createStatement();

for(int i = 0; i < queries.length; i++){
   stmt.execute(queries[i]);
}

這也適用於多個 hive sql 查詢,例如選擇、插入、刪除等。 基於 sql 語句結果集打印或填充到 JTable 中。

注意:execute()、executeUpdate() 和executeQuery() 不一樣。 根據你的sql語句選擇。

execute() - 如果查詢返回的第一個對象是 ResultSet 對象,則返回 true。

executeUpdate() - 返回一個整數,表示受 SQL 語句影響的行數。

executeQuery() - 返回一個 ResultSet 對象。

參考: docs.oracle.com/javase

HTH

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM