gpt4 book ai didi

java - 配置单元查询无法通过 jdbc 生成结果集

转载 作者:可可西里 更新时间:2023-11-01 14:42:35 24 4
gpt4 key购买 nike

我是 Hive 和 Hadoop 的新手。在我的教程中,我想将表创建为

import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;

public class HiveCreateDb {
private static String driverName = "org.apache.hive.jdbc.HiveDriver";

public static void main(String[] args) {
// Register driver and create driver instance

try {
Class.forName(driverName);

// get connection

Connection con = DriverManager.getConnection("jdbc:hive2://localhost:10000/mydb", "root", "");
Statement stmt = con.createStatement();


stmt.executeQuery("CREATE TABLE IF NOT EXISTS " + " employee ( e_id int, name String, "
+ " salary String)" + " STORED AS TEXTFILE");

System.out.println("Operation done successfully.");

con.close();
} catch (ClassNotFoundException e) {
System.err.println("class not found!!!!");
e.printStackTrace();
} catch (SQLException e) {
System.err.println("sql exception!!!");
e.printStackTrace();
}

}
}

当我运行代码时出现这个错误

sql exception!!! java.sql.SQLException: The query did not generate a result set! at org.apache.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:393)
at tr.com.vedat.hive.HiveCreateDb.main(HiveCreateDb.java:25)

所以,我找不到解决方案。任何人都可以帮我找到错误并引导我正确的方法吗?

最佳答案

看起来 Hive 驱动程序随着时间的推移变得更加严格。看这个Google Group discussion

使用 stmt.execute() 进行创建新表的查询。的执行查询。 executeQuery() 现在仅用于选择查询 (DML),而 execute 可能用于 DDL(数据定义)。

这是有道理的,因为我在其他语言(在我的例子中是 Python 和 C#)中看到的大多数驱动程序会将只读操作与可以实际更改数据结构的方法分开。

page shows the usage of executeQuery()对于 DDL:

 ResultSet res = stmt.executeQuery("create table " + tableName + " (key int, value string)");

这里execute的例子是Python的,所以你可以注意到Java例子中的所有DDL都使用了executeQuery

关于java - 配置单元查询无法通过 jdbc 生成结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31340332/

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