gpt4 book ai didi

java - 使用 java 使用语句类的单个 execute() 方法执行多个配置单元查询

转载 作者:可可西里 更新时间:2023-11-01 14:33:00 55 4
gpt4 key购买 nike

我正在使用 Java API 访问 HiveServer2,我需要在单次调用语句类的 execute() 方法时执行多个配置单元查询。是否可以在对execute() 方法的一次调用中提交多个配置单元查询。我有配置单元属性设置为:

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() - Returns true if the first object that the query returns is a ResultSet object.

executeUpdate() - Returns an integer representing the number of rows affected by the SQL statement.

executeQuery() - Returns one ResultSet object.

引用:docs.oracle.com/javase

HTH

关于java - 使用 java 使用语句类的单个 execute() 方法执行多个配置单元查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37678990/

55 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com