java.sql.SQLException: org.apache.thrift.transport.TTransportException in hive?

2022-09-04 20:58:07

我正在尝试使用java在hive中创建表。我发现

java.sql.SQLException: org.apache.thrift.transport.TTransportException

在执行我的代码时。

这是我的代码

public void createTable(String tableName) {
        try{
            Statement stat = con.createStatement();

        String QueryString = "CREATE TABLE '"+tableName+"'(User_Id INTEGER NOT NULL AUTO_INCREMENT, " + "User_Name VARCHAR(25), UserId VARCHAR(20), User_Pwd VARCHAR(15), primary key(User_Id))";

        a = stat.executeUpdate(QueryString);
        if(a==1){
            System.out.println(a);
            System.out.println("Table has been created");
        }

        }catch(Exception e){
        System.out.println(e);}
} 

为什么会引发此异常,我该如何修复它?


答案 1

这是一个非常通用的错误消息,描述配置单元服务器有问题,并建议您查看 Hive 日志。如果您访问配置单元日志并找到异常调用堆栈,则可以找到根本原因,或者如果您共享异常,我也许能够为您提供帮助。

我见过的最常见的问题是:

  1. 与并发相关的元存储问题

  2. 当您启动hive服务器作为$hive --服务您的hiveserver并使其运行数天,然后运行您的代码时,您的连接可能是代理到服务器的,您将收到完全相同的错误。如果重新连接到服务器,此错误将消失。这只是因为一段时间后wait_time过期并断开连接。

  3. 特定于端口的错误

在启动 Hive 服务器之前,请务必为 Hive 服务器设置一个打开的端口,并按如下方式进行设置:

 $export HIVE_PORT=10000
 $hive --service hiveserver
 $ _run_your_code

可能还有其他原因,但是您最好的选择是检查hive日志中的调用堆栈以找到根本原因并解决问题。


答案 2

推荐