使用beeline或java jdbc代码时,Hive抛出错误

时间:2016-01-13 11:02:59

标签: java hadoop jdbc hive

我正在尝试使用JDBC代码连接到我的服务器,但它会出现以下错误。

我查了一下,发现SessionState类是hive-exec-0.14.0.jar的成员。我可以在hive类路径中看到这个jar。当我在apache文档中检查此类时,方法setUserIpAddress不可用。任何有关这方面的帮助将不胜感激。

2016-01-13 03:15:18,443 INFO  [HiveServer2-Handler-Pool: Thread-24]: thrift.ThriftCLIService (ThriftCLIService.java:OpenSession(232)) - Client protocol version: HIVE_CLI_SERVICE_PROTOCOL_V6 
2016-01-13 03:15:18,444 ERROR [HiveServer2-Handler-Pool: Thread-24]: thrift.ProcessFunction (ProcessFunction.java:process(41)) - Internal error processing OpenSession java.lang.NoSuchMethodError:

org.apache.hadoop.hive.ql.session.SessionState.setUserIpAddress(Ljava/lang/String;)
         at org.apache.hive.service.cli.session.HiveSessionImpl.<init>(HiveSessionImpl.java:112)
         at org.apache.hive.service.cli.session.HiveSessionImplwithUGI.<init>(HiveSessionImplwithUGI.java:47)
         at org.apache.hive.service.cli.session.SessionManager.openSession(SessionManager.java:260)
         at org.apache.hive.service.cli.CLIService.openSessionWithImpersonation(CLIService.java:175)
         at org.apache.hive.service.cli.thrift.ThriftCLIService.getSessionHandle(ThriftCLIService.java:322)
         at org.apache.hive.service.cli.thrift.ThriftCLIService.OpenSession(ThriftCLIService.java:235)
         at org.apache.hive.service.cli.thrift.TCLIService$Processor$OpenSession.getResult(TCLIService.java:1253)
         at org.apache.hive.service.cli.thrift.TCLIService$Processor$OpenSession.getResult(TCLIService.java:1238)
         at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
         at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
         at org.apache.hive.service.auth.TSetIpAddressProcessor.process(TSetIpAddressProcessor.java:56)
         at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:206)
         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)

1 个答案:

答案 0 :(得分:1)

方法SessionState.setUserIpAddress是hive 1.0

的新功能

r0.13.1中,此方法尚不存在,

r1.0.1它就在那里。

请将您的hive-exec升级到版本&gt; 1.0.1使这项工作。