Verbinden Hive, die durch die Java JDBC
Es ist eine Frage, die hier die Verbindung von java zu Hive aber mir ist verschiedenen
Mein hive auf Computer1 und ich brauche einige Abfragen mit der Java-server läuft auf Computer2 im Dialogfeld Lizenzaktivierung. So wie ich das verstehe Hive verfügt über eine JDBC-Schnittstelle für den Zweck der Empfang von remote-Abfragen. Ich habe den code von hier - HiveServer2 Kunden
Installierte ich die Abhängigkeiten in den Artikel geschrieben:
- hive-jdbc*.jar
- hive-service*.jar
- libfb303-0.9.0.jar
- libthrift-0.9.0.jar
- log4j-1.2.16.jar
- slf4j-api-1.6.1.jar
- slf4j-log4j12-1.6.1.jar
- commons-logging-1.0.4.jar
Allerdings habe ich java.lang.NoClassDefFoundError Fehler zur compile-Zeit
Voller Fehler:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration
at org.apache.hive.jdbc.HiveConnection.createBinaryTransport(HiveConnection.java:393)
at org.apache.hive.jdbc.HiveConnection.openTransport(HiveConnection.java:187)
at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:163)
at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at com.bidstalk.tools.RawLogsQuerySystem.HiveJdbcClient.main(HiveJdbcClient.java:25)
Andere Frage bei StackOverflow empfohlen, um Hadoop-API dependencies in Maven - Hive-Fehler
Ich verstehe nicht, warum brauche ich die hadoop-API für ein client zum herstellen einer Verbindung mit Hive. Sollte nicht JDBC-Treiber sein, der Agnostiker von der zugrunde liegenden Abfrage system? Nur muss ich einige SQL-Abfrage?
Edit:
Ich bin mit Cloudera(5.3.1), ich denke, ich muss hinzufügen, CDH Abhängigkeiten. Cloudera-Instanz ausgeführt wird hadoop 2.5.0 und HiveServer2
Aber die Server sind an der Maschine 1. Auf der Maschine sollte der code zumindest kompilieren und sollte ich Probleme haben zur Laufzeit nur!
- was ist die version von hadoop und hive?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Falle dass, wenn Sie nicht noch dieses Problem lösen, ich habe es zu gehen.
Und ich brauchte die folgenden Abhängigkeiten für die es zum kompilieren und ausführen :
Den hive-Dokumentation ist möglicherweise geschrieben gegen eine ältere version/distribution.
Ihre Ausnahme ist aufgrund der fehlenden
hadoop-common
Gefäß, das hat dieorg.apache.hadoop.conf.Configuration
.Hoffe, das hilft.
Immer die gleichen Fehler, wenn Sie versuchen, um hive-jdbc-1.2.1 gegen hive 0.13.
Im Vergleich zu der langen Liste in anderen Antworten. Nutzen wir jetzt diese beiden:
Anderen Seite Hinweis: möglicherweise erhalten " erforderliches Feld 'client_protocol' nicht gesetzt ist!' bei Verwendung der aktuellen jdbc-gegen eine ältere Struktur. Wenn ja, ändern Sie die jdbc-version 1.1.0:
Beantwortung meiner eigenen Frage!
Mit einigen hit-und trial -, habe ich folgende Abhängigkeiten auf meine pom-Datei und seither bin ich in der Lage zum ausführen von code auf beiden KHK 5.2.1 5.3.1 und cluster.
Bitte beachten Sie, dass einige dieser Abhängigkeiten möglicherweise nicht erforderlich
Für andere Fragen, etwa darüber, was genau ist erforderlich, um Remote ausgeführt einer HIVE-Abfrage mit java...
Java-code
Zusammen mit der pom-Datei mit der nur die benötigten Abhängigkeiten..
Ich habe vor dem gleichen Problem mit CDH5.4.1-version. Ich aktualisiert meine POM-Datei mit den folgenden code und es funktionierte für mich.
Meine Hadoop-Version ist
Hadoop 2.6.0-cdh5.4.1
- und Hive-version istHive 1.1.0-cdh5.4.1
Ich habe beschlossen mit diesem POM-update.
Scheint, dass Sie alle die Zusammenarbeit mit cloudera, fand ich, dass das repo in maven alt aussieht, weil, wenn Sie gehen, um Ihre Website, können Sie laden Sie Ihre jdbc. https://www.cloudera.com/downloads/connectors/hive/jdbc/2-5-20.html
Der Fahrer scheint zu unterstützen, mehr Funktionalität als die im Bienenstock. Ich merke, dass Sie addBatch umgesetzt. Ich wünschte nur, Sie hatten diese Bibliotheken in maven. Vielleicht kann jemand herausfinden, wo Sie aus der Verwendung von maven.