2016-04-20 9 views
3

Ich versuche, Verbindung mit Impala JDBC Verbindung herzustellen. Imapala Treiberglas verwendet wird ImpalaJDBC41. Fehler beim Verbindungsobjekt zu schaffen 'con' Error - [Simba] ImpalaJDBCDriver Fehler beim Setzen/session in Imapala jdbc Verbindung geschlossenSimba] [ImpalaJDBCDriver] (500151) Fehler beim Einrichten/Schließen der Sitzung in Imapala jdbc Verbindung

-Code ist wie folgt:

import java.sql.Connection;  
import java.sql.DriverManager; 

import java.sql.SQLException; 
import java.sql.Statement; 

public class JDBC_Connection1 { 
    private static String driverName = "com.cloudera.impala.jdbc41.Driver"; 
    public static void main(String[] args) throws SQLException { 
    try { 
     Class.forName(driverName); 

     } 
    catch (ClassNotFoundException e) 
     { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      System.exit(1); 
     } 
     Connection con = DriverManager.getConnection("jdbc:impala://host:25004/;principal=impala/[email protected]"); 
     Statement stmt = con.createStatement(); 
     String tableName = "yogesh"; 
     stmt.executeQuery("drop table " + tableName); 
    } 

} 
+0

Welche Version des Treibers und Impala verwenden Sie? Können Sie die Protokollierung aktivieren (im Benutzerhandbuch beschrieben) und den Trace anhängen? – KylePorter

Antwort

0

url sollte sein: jdbc: Impalas: //192.168.8.183: 21050; AuthMech = 1; KrbRealm = abc.ENTERPRISENET.ORG; KrbHostFQDN = your-Host; KrbServiceName = Impalas

und kerberos brauchen hadoop kerberos env

System.setProperty("sun.security.krb5.debug", "false"); 
System.setProperty("java.security.krb5.conf",loader.getResource("secret/krb5.ini").getPath()); 
org.apache.hadoop.conf.Configuration conf = new org.apache.hadoop.conf.Configuration(); 
conf.set("hadoop.security.authentication", "Kerberos"); 
UserGroupInformation.setConfiguration(conf); 
UserGroupInformation.loginUserFromKeytab("hdfs/[email protected]", loader.getResource("secret/184_hdfs.keytab").getPath()); 
     UserGroupInformation loginUser = UserGroupInformation.getLoginUser(); 
     loginUser.doAs(new PrivilegedAction<Void>() { 
      @Override 
      public Void run() { 
       connectImpala(); 
       return null; 
      } 
     }); 
} 
0

Ich hatte den gleichen Fehler (Code 500151) mit dem Cloudera JDBC-Treiber für Hive, und konnte es lösen, indem ich ;SocketTimeout=0 zu meiner Verbindungszeichenfolge hinzufügte.

Achten Sie darauf, die Dokumentation zu lesen, dass Sie zu machen, sind nicht zu vergessen einige Eigenschaften: