2015-12-31 34 views
5

enter image description here Facendo riferimento a Hive2 creato un semplice programma java per connettersi al server HIVE2 (non locale) hanno aggiunto tutti i jar menzionati nel collegamento sopra nel percorso classe in eclipse e tuttavia quando eseguo il il codice si genera un errore come:Impossibile connettersi a HIVE2 tramite 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) 

Riferito here e here ma non ha risolto il problema.

+0

Avete aggiunto tutte le librerie vaso compreso parsimonia? Sembra che tu non abbia aggiunto il file jar di parsimonia. –

+0

@MobinRanjbar: Sì, la sua aggiunta è stata aggiornata con la schermata di esso. – Vinod

+0

Provare a eseguire il downgrade della versione di libthrift a una versione precedente come 0.8.0 o 0.7.0. –

risposta

4

Si utilizza un url jdbc di tipo hive2.

Come spiegato nel Hive wiki, JDBC parsimonia non è più consigliato:

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.

Checkout this info su hive2 JDBC. Driver può essere trovato qui, per esempio:

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

+0

È andato su JARS uno per uno e ho ricostruito il progetto, come hai detto era dovuto a un problema di versione JAR incompatibile, ora è risolto e sono in grado di collegarmi all'alveare, grazie – Vinod

+0

@Jan la parsimonia jdbc è davvero sconsigliata? Solo una pagina di distanza nella stessa wiki dice che HiveServer2 "include il server Hive basato su Thrift". (Https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Overview). Non riesco a capire se dovrei essere a caccia di barattoli di parsimonia o no ... –

+0

Cosa intendi con "JDBC non è più raccomandato"? –

Problemi correlati