java中的java.sql.SQLException:org.apache.thrift.transport.TTransportException?

我正在尝试使用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);} } 

为什么抛出此exception以及如何解决它。

这是一个非常通用的错误消息,描述了hiveserver出现问题并建议您查看Hive日志。 如果您访问配置单元日志并找到exception调用堆栈,您可以找到根本原因,或者如果您共享exception,我可能会帮助您。

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

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

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

  3. 端口特定错误

在启动配置单元服务器之前,请务必为Hive Server设置一个打开的端口并将其设置如下:

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

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