蜂巢JDBC的getConnection不回(Hive JDBC getConnection doe

2019-06-26 16:23发布

我下面的蜂巢JDBC教程。 我无法得到它的工作。 当设法得到它只是挂起的连接。 它没有任何报告任何错误。 我敢肯定,蜂巢服务器正在运行。 任何帮助吗?

public class HiveJdbcClient {
  private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
  public static void main(String[] args){
      try {
      Class.forName(driverName);
    } catch (ClassNotFoundException e) {
           e.printStackTrace();
      System.exit(1);
    }

    try{
        Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/default", "", "");
        System.out.println("got the connection");

    }catch(SQLException e){
        e.printStackTrace();
    }
  }
}

使用netstat的输出:

$ sudo netstat -anlp | grep 10000
Password:
tcp        0      0 0.0.0.0:10000               0.0.0.0:*                   LISTEN      27738/java
tcp      107      0 127.0.0.1:10000             127.0.0.1:45910             ESTABLISHED 27738/java
tcp        0      0 127.0.0.1:33665             127.0.0.1:10000             ESTABLISHED 24475/java
tcp        0      0 127.0.0.1:45910             127.0.0.1:10000             ESTABLISHED 7445/java
tcp      107      0 127.0.0.1:10000             127.0.0.1:33665             ESTABLISHED 27738/java

Answer 1:

纳雷什:尝试停止triffserver,然后移动到HIVE_HOME / bin目录从你的终端,然后使用./hive --service hiveserver 10000&命令启动蜂巢TRIFT服务器。 然后尝试运行该程序。 做一个创建表按照蜂巢客户维基例子。 然后做下一步演出表查询。 让我们知道结果一旦这个步骤之后。 我们可以以后讨论。



Answer 2:

你可以做下面的准确判断挂起正在发生的事情。 这里是我做了跟踪它在我的破蜂巢JDBC连接的例子。 请注意,这不是一个具体的解决方案,以任何普通蜂巢连接吊错误。

这是一个问题的答案:“我怎么能找出我的JDBC连接蜂巢挂?”

是什么让这个苦苦追寻的是JDBC动态调用。 相反,你可以手动createa HiveConnection()类。 这允许你添加一些跟踪到代码直接,看到这里的窍门正在发生的事情。

我已经通过执行以下追查这一点。

*使用LOG4J *

节俭和其他JDBC蜂巢类连接时使用的log4j,如果打开调试日志记录上,可以看到细粒度的错误。 您可以通过添加很容易做到这一点

BasicConfigurator.configure()

为了您的客户端应用程序。 在任何情况下,这样做使我发现,这似乎SASL传输层中被拖延。 我想这可能是与安全相关的,但我会假设一个安全错误仍然会返回,而不是挂。所以我觉得这可能是值得JIRA的。 我贴一个跟进的问题:

如何跟踪失败OT TSaslTransport(蜂巢相关)

*另一种方法*

1)你可以抓住从GitHub,或其它地方的“HiveConnection”类的副本,并实例化一个新问题:

String url=String.format("jdbc:hive2://%s:%s/default", server, port) Properties p = new Properties(); p.setProperty("host", con); Connection jdbc = new HiveConnection(url,p);

然后,您可以将您的调试器挂钩或日志报表的HiveConnection()类。

Ulitmately,当我有这个错误,我把它上溯到:

openTransport

最终创建一个

org.apache.thrift.transport.TSaslClientTransport

实例。

和恒发生在这个代码块:

try { System.out.println(".....1 carrying on... attempting to open. " + transport.getClass().getName()); transport.open(); System.out.println("done open."); } catch (TTransportException e) { System.out.println("2 fail ."); e.printStackTrace(); throw new SQLException("Could not establish connection to " + uri + ": " + e.getMessage(), " 08S01"); }

FYI我已跟进有关为什么我的连接失败。 它可能与你以及... 如何跟踪失败OT TSaslTransport(蜂巢相关)



Answer 3:

我有同样的问题/选中此PARAMS:

driverName = "org.apache.hive.jdbc.HiveDriver"

con = DriverManager.getConnection("jdbc:hive2://192.168.1.93:10000/default", "", "");


文章来源: Hive JDBC getConnection does not return
标签: jdbc hadoop hive