【问题标题】:Unable to connect to hive server2 (SQL Exception, thrift transport exception and so on)无法连接到 hive server2(SQL 异常、thrift 传输异常等)
【发布时间】:2017-02-06 12:10:55
【问题描述】:

我们尝试使用 JAR 连接到 hive server2 数据库:

  1. hadoop-common-2.7.1.2.3.2.0-2950.jar
  2. hive-jdbc-1.2.1.2.3.2.0-2950-standalone.jar

我们将这两个 jar 集成到 Eclipse 项目中,连接 hive 数据库的代码是:

Connection con=null;
    try {
        Class.forName("org.apache.hive.jdbc.HiveDriver");
        StringBuffer jdbcConnectionString = new StringBuffer();
        jdbcConnectionString.append("jdbc:hive2://10.205.64.70:10000/default");
        con = DriverManager.getConnection(jdbcConnectionString.toString(),"********","********");
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

但是当我们执行时,我们得到如下错误

java.sql.SQLException: Could not open client transport with JDBC Uri: jdbc:hive2://10.205.64.70:10002/imsone: Invalid status 72
Could not open client transport with JDBC Uri: jdbc:hive2://10.205.64.70:10002/imsone: Invalid status 72
    at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:209)
    at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:107)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at dummy.connectToHive.connect(connectToHive.java:40)
    at dummy.connectToHive.main(connectToHive.java:16)
Caused by: org.apache.thrift.transport.TTransportException: Invalid status 72
    at org.apache.thrift.transport.TSaslTransport.sendAndThrowMessage(TSaslTransport.java:232)
    at org.apache.thrift.transport.TSaslTransport.receiveSaslMessage(TSaslTransport.java:184)
    at org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:307)
    at org.apache.thrift.transport.TSaslClientTransport.open(TSaslClientTransport.java:37)
    at org.apache.hive.jdbc.HiveConnection.openTransport(HiveConnection.java:227)
    at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:182)
    ... 5 more

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: java jdbc hive bigdata


    【解决方案1】:

    错误 72 是一个错误的 url 问题。您的 hive2 服务器是否以 HTTP 模式运行?

    HiveServer2 在 HTTP 模式下运行时的连接 URL 为:-

    jdbc:hive2://<host>:<port>/<db>;transportMode=http;httpPath=<http_endpoint>
    

    在哪里:- 是 hive-site.xml 中配置的相应 HTTP 端点。默认值为 cliservice。

    HTTP 传输模式的默认端口是 10001。

    你可以试试下面的网址:

    jdbc:hive2://10.205.64.70:10001/default;transportMode=http;httpPath=cliservice
    

    【讨论】:

    • 现在我们得到错误:线程“main”中的异常 java.lang.NoSuchFieldError: INSTANCE at org.apache.http.conn.ssl.SSLConnectionSocketFactory.(SSLConnectionSocketFactory.java:144 ) 在 org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:912) hive-site.xml 部分内容是:thrift://10.205.64.70:9083远程元存储的 Thrift URI。 Metastore 客户端用于连接到远程 Metastore。
    • 问题解决了吗?此外,任何错误或代码请更新您的问题,不要发表评论。很难在评论中阅读。
    • 这里报告了一个类似的问题:stackoverflow.com/questions/35868242/…
    • 我没有得到任何解决方案,所以我尝试使用 qubol jars 来解决它,如果我能够实现,我会在这里更新
    猜你喜欢
    • 2021-05-16
    • 1970-01-01
    • 2012-09-06
    • 2017-08-09
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    相关资源
    最近更新 更多