2016-08-04 12 views
0

Wenn ich die folgende Art von Impalas Verbindung haben, kann ich immer noch SQuirreL SQL verwenden:Impala JDBC-Verbindung: Fehler beim Setzen/Abschlusssitzung: Open Session Fehler

self.impala_con = connect(host='sql.edamame.com', port=25003, use_ssl=True, auth_mechanism="PLAIN", 
           user='edamame1', password='edamamePass') 

Hier ist, wie ich den Alias ​​in Eichhörnchen gesetzt:

enter image description here

habe ich die folgenden Fehler während der Testverbindung:

java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.sql.SQLException: [Simba][ImpalaJDBCDriver](500151) Error setting/closing session: Open Session Error. 
    at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
    at java.util.concurrent.FutureTask.get(FutureTask.java:206) 
    at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand.awaitConnection(OpenConnectionCommand.java:132) 
    at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand.access$100(OpenConnectionCommand.java:45) 
    at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand$2.run(OpenConnectionCommand.java:115) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

Update:

Ich habe auch versucht die URL unten:

jdbc:impala://sql.edamame.com:25003/default;AuthMech=3;SSL=1 

und die folgenden neuen Fehlermeldungen erhalten:

java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.sql.SQLException: [Simba][ImpalaJDBCDriver](500310) Invalid operation: null; 
    at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
    at java.util.concurrent.FutureTask.get(FutureTask.java:206) 
    at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand.awaitConnection(OpenConnectionCommand.java:132) 
    at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand.access$100(OpenConnectionCommand.java:45) 
    at net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand$2.run(OpenConnectionCommand.java:115) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

Was sonst könnte ich fehlen? Vielen Dank!

Antwort

0

Kurze Antwort: RTFM.

Lange Antwort: Der Cloudera JDBC-Treiber wird mit einer mehr als 80-seitigen PDF-Datei "Install and Config guide" ausgeliefert. Sei nicht schüchtern, öffne es. Sie können direkt zu Anhang A gehen - Treiber Config und schauen Sie sich diese Einträge:

AuthMech Der Authentifizierungsmechanismus zu verwenden.
den Wert auf eine der folgenden Nummern Set:
  0 für keine Authentifizierung
  1 für Kerberos
  2 für User Name
  3 für Benutzername und Kennwort

SSL
Wenn diese property wird auf 1 gesetzt, der Treiber kommuniziert über einen SSL-fähigen Socket mit dem Impala-Server. Wenn diese Eigenschaft auf 0 festgelegt ist, stellt der Treiber keine Verbindung zu SSL-aktivierten Sockets her.

So sollte Ihre URL aussieht
jdbc:impala://blahblah:25003/default;AuthMech=3;SSL=1

Eine weitere Sache: SSL-Handshake-Probleme zu beheben, können Sie die Debug-Spuren mit dieser Java-Systemeigenschaft ermöglichen können ...
-Djavax.net.debug=ssl

+0

Dank Samson, ich habe versucht, die URL, die Sie vorgeschlagen, und dann einen neuen Fehler (siehe Update in der Frage). Weißt du was ich verpasst habe? Vielen Dank! – Edamame

+0

@Edamame, ich wette auf ein SSL-Zertifikat Validierungsproblem - entweder Ihr Server verwendet ein selbstsigniertes Zertifikat, oder es verwendet ein Zertifikat von einem Corporate C.A. Das wurde nicht im Standard-TrustStore Ihrer JRE aufgelistet. Aktivieren Sie das Debug-Trace-Flag, um sicher zu gehen. Wenn dies der Fall ist, sollten Sie sich über die Java-Eigenschaften 'javax.net.ssl.trustStore' und' .trustStorePassword' informieren; Lernen Sie auch das Dienstprogramm 'keytool' kennen, um einen benutzerdefinierten TrustStore im JKS-Format zu erstellen. Habe Spaß...! –

+0

@Edamame, in zweiter Linie, ein SSL-Zertifikat Validierungsproblem wäre viel ausführlicher darüber, was passiert ist (mit 'javax.net.ssl.SSLHandshakeException'). Google über diesen Fehlercode und ImpalaJDBCDriver und viel Spaß ...! –