2016-08-08 21 views
0

esorg.apache.thrift.transport.TTransportException: Kann ohne Port nicht geöffnet werden?

ich ganz neu bin Hive und eine Java-Anwendung, die greift mit der Kerberos-Authentifizierung, hive unten wie:

try 
     { 
      System.setProperty("java.security.krb5.conf", "/haManage/krb5.conf"); 
      StringBuilder sBuilder = new StringBuilder(); 
      sBuilder.append("jdbc:hive2://ha-cluster/default"); 
      sBuilder.append(";zk.quorum=").append("x.x.x.x,x.x.x.x");//ip list 
      sBuilder.append(";zk.port=").append("24002"); 
      if (isSecureVer) { 
       sBuilder.append(";user.principal=") 
         .append("[email protected]") 
         .append(";user.keytab=") 
         .append("/home/hdclient/gyj/user.keytab") 
         .append(";sasl.qop=auth-conf;auth=KERBEROS;principal=hive/" + 
           "[email protected];zk.principal=zookeeper/hadoop.hadoop.com"); 
      } 
      url = sBuilder.toString(); 
      logger.info(url); 
      Class.forName("org.apache.hive.jdbc.HiveDriver"); 
      connToHive = DriverManager.getConnection(url,"",""); 
     } catch (Exception e) 
     { 
      logger.error("Error occurs",e); 
     } 

Aber Ausnahme geschieht, unten gezeigt:

Caused by: org.apache.thrift.transport.TTransportException: Cannot open without port. 
    at org.apache.thrift.transport.TSocket.open(TSocket.java:172) ~[hive-exec-0.14.0.jar:0.14.0] 
    at org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:248) ~[hive-exec-0.14.0.jar:0.14.0] 
    at org.apache.thrift.transport.TSaslClientTransport.open(TSaslClientTransport.java:37) ~[hive-exec-0.14.0.jar:0.14.0] 
    at org.apache.hadoop.hive.thrift.client.TUGIAssumingTransport$1.run(TUGIAssumingTransport.java:52) ~[hive-exec-0.14.0.jar:0.14.0] 
    at org.apache.hadoop.hive.thrift.client.TUGIAssumingTransport$1.run(TUGIAssumingTransport.java:49) ~[hive-exec-0.14.0.jar:0.14.0] 
    at java.security.AccessController.doPrivileged(Native Method) ~[na:1.7.0_45] 
    at javax.security.auth.Subject.doAs(Subject.java:415) ~[na:1.7.0_45] 
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1656) ~[hadoop-common-2.6.4.jar:na] 
    at org.apache.hadoop.hive.thrift.client.TUGIAssumingTransport.open(TUGIAssumingTransport.java:49) ~[hive-exec-0.14.0.jar:0.14.0] 
    at org.apache.hive.jdbc.HiveConnection.openTransport(HiveConnection.java:190) ~[hive-jdbc-1.1.0.jar:1.1.0] 
    ... 6 common frames omitted 

Beliebig Anstrengung wird geschätzt.

Antwort

0

Während Sie den zookeeper-Port als Abfragezeichenfolgenparameter angegeben haben (für kerberos-Authentifizierung erforderlich), müssen Sie nach dem Hostnamen-Teil der URL auch den Port für die Struktur haben. Der normale von Hive verwendete Port ist 10000, daher könnte Ihre URL wie folgt beginnen:

sBuilder.append("jdbc:hive2://ha-cluster:10000/default"); 
Verwandte Themen