[英]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 对象。
HTH
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.