2016-11-18 4 views
1

Ich habe Spark auf EMR ausgeführt und ich habe versucht, eine Verbindung zu Spark-SQL von SQLWorkbench mithilfe der JDBC-Hive-Treiber, aber vergeblich. Ich habe den Thrift-Server auf dem EMR gestartet und kann mich über Port 10000 (Standard) von Tableau/SQL Workbench mit Hive verbinden. Wenn ich versuche, eine Abfrage auszuführen, wird ein Tez/Hive-Job ausgelöst. Ich möchte jedoch die Abfrage mit Spark ausführen. Innerhalb der EMR-Box kann ich mich über Beeline mit SparkSQL verbinden und eine Abfrage als Spark-Job ausführen. Der Ressourcenmanager zeigt, dass die Beeline-Abfrage als ein Funke-Job ausgeführt wird, während die Abfrage, die über SQLWorkbench ausgeführt wird, einen Hive/Tez-Job ausführt.Verbinden mit Spark SQL auf EMR mit JDBC

Als ich die Protokolle überprüft habe, habe ich festgestellt, dass der Thrift-Server, der eine Verbindung zu Spark herstellt, auf Port 10001 läuft (Standard). Wenn ich Beeline fire, kommen die Einträge für die Verbindung und SQL, die ich ausgeführt werde. Wenn jedoch die gleichen Verbindungsparameter zum Verbinden von SQLWorkbench/Tableau verwendet werden, gibt es eine Ausnahme ohne viele Details. die Ausnahme nur sagen, dass die Verbindung beendet ist.

Ich habe versucht, auf einem benutzerdefinierten Port ausgeführt, indem Sie die Parameter übergeben, beeline funktioniert, aber nicht über JDBC Verbindung.

Hilfe zur Lösung dieses Problems?

Antwort

0

Ich konnte das Problem beheben. Ich konnte eine Verbindung zu SparkSQL von Tableau herstellen, und der Grund, warum ich keine Verbindung herstellen konnte, war, dass wir den Secondhand-Service als Root einführten. Nicht sicher, warum es wichtig wäre, ich musste die Berechtigung für den Protokollordner auf den aktuellen Benutzer (nicht root) ändern und den Sparservice aufrufen, der es mir ermöglichte, ohne Probleme eine Verbindung herzustellen.