2015-12-31 8 views
5
nicht möglich

enter image description here Bezug nehmend auf Hive2 erstellt ein einfaches Java-Programm zum Herstellen einer Verbindung zu HIVE2-Server (nicht lokal) habe alle genannten Gläser in den obigen Link im Klassenpfad in Eclipse auch hinzugefügt, wenn ich das ausführen Code wirft er einen Fehler wie:Verbindung zu HIVE über JAVA

09:42:35,580 INFO Utils:285 - Supplied authorities: hdstg-c01-edge-03:20000 
09:42:35,583 INFO Utils:372 - Resolved authority: hdstg-c01-edge-03:20000 
09:42:35,656 INFO HiveConnection:189 - Will try to open client transport with JDBC Uri: jdbc:hive2://hdstg-c01-edge-03:20000 
FAILED: f 
java.lang.NoSuchMethodError: org.apache.thrift.protocol.TProtocol.getScheme()Ljava/lang/Class; 
at org.apache.hive.service.cli.thrift.TCLIService$OpenSession_args.write(TCLIService.java:1854) 
at org.apache.thrift.TServiceClient.sendBase(TServiceClient.java:63) 
at org.apache.hive.service.cli.thrift.TCLIService$Client.send_OpenSession(TCLIService.java:150) 
at org.apache.hive.service.cli.thrift.TCLIService$Client.OpenSession(TCLIService.java:142) 
at org.apache.hive.jdbc.HiveConnection.openSession(HiveConnection.java:456) 
at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:178) 
at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105) 
at java.sql.DriverManager.getConnection(DriverManager.java:579) 
at java.sql.DriverManager.getConnection(DriverManager.java:221) 
at testScripts.HiveJdbcClient.f(HiveJdbcClient.java:19) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85) 
at org.testng.internal.Invoker.invokeMethod(Invoker.java:648) 
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:834) 
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1142) 
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:124) 
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108) 
at org.testng.TestRunner.privateRun(TestRunner.java:771) 
at org.testng.TestRunner.run(TestRunner.java:621) 
at org.testng.SuiteRunner.runTest(SuiteRunner.java:357) 
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:352) 
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:310) 
at org.testng.SuiteRunner.run(SuiteRunner.java:259) 
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1176) 
at org.testng.TestNG.runSuitesLocally(TestNG.java:1101) 
at org.testng.TestNG.run(TestNG.java:1009) 
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111) 
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204) 
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175) 

Geworben here und here aber es hat das Problem nicht lösen.

+0

Haben Sie alle jar Libs einschließlich thrift hinzugefügt? Es sieht so aus, als hätten Sie keine JAR-Datei hinzugefügt. –

+0

@MobinRanjbar: Ja, es wurde mit Screenshot davon aktualisiert. – Vinod

+0

Versuchen Sie, Ihre Version von libthrift auf eine ältere Version wie 0.8.0 oder 0.7.0 herunterzustufen. –

Antwort

4

Sie verwenden eine jdbc-URL des Typs hive2.

Wie in Hive wiki erklärt, die Sparsamkeit jdbc wird nicht mehr empfohlen:

JDBC

This document describes the JDBC client for the original Hive Server (sometimes called Thrift server or HiveServer1). For information about the HiveServer2 JDBC client, see JDBC in the HiveServer2 Clients document. HiveServer2 use is recommended; the original HiveServer has several concurrency issues and lacks several features available in HiveServer2.

Kasse this info auf hive2 jdbc. Fahrer kann hier zum Beispiel zu finden:

http://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/1.2.1

+0

ging durch JARS eins nach dem anderen und das Projekt neu aufgebaut, wie Sie sagten, es wegen inkompatiblen JAR Version Problem war, jetzt ist es gelöst und ich bin in der Lage, eine Verbindung zu Bienenstock, danke – Vinod

+0

@Jan ist Sparsamkeit jdbc wirklich nicht zu empfehlen? Nur eine Seite entfernt in demselben Wiki heißt es, dass HiveServer2 "den Thrift-basierten Hive-Server enthält". (https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Overview). Ich kann nicht herausfinden, ob ich nach Spargeldgläsern jagen sollte oder nicht ... –

+0

Was meinst du "JDBC nicht länger empfohlen"? –

Verwandte Themen