【问题标题】:Java NoSuchMethodError when connecting via JDBC to Hive通过 JDBC 连接到 Hive 时出现 Java NoSuchMethodError
【发布时间】:2015-08-31 08:59:06
【问题描述】:

尝试从 Eclipse 中的简单 java 程序连接到 Hive 时出现以下错误。看起来它连接然后引发此错误。我可以通过直线在本地连接到 Hive Thrift 服务器而不会出现问题。

两个 libthrift .jar 文件都是 0.9.2。在客户端和服务器上相同。以下 .jar 文件的服务器和客户端版本相同:

hive-jdbc*.jar              1.2.0
hive-service*.jar           1.2.0
libfb303-0.9.0.jar          0.9.2
libthrift-0.9.0.jar         0.9.2
log4j-1.2.16.jar            1.2.16
slf4j-api-1.6.1.jar         1.7.5
slf4j-log4j12-1.6.1.jar     1.7.5
commons-logging-1.0.4.jar   1.1.3


Exception in thread "main" 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:578)
       at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:192)
       at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105)
       at java.sql.DriverManager.getConnection(Unknown Source)
       at java.sql.DriverManager.getConnection(Unknown Source)

我使用的 libthrift 版本被 Apache 列为具有 getScheme() 方法。

任何帮助将不胜感激!

【问题讨论】:

    标签: java hadoop jdbc hive thrift


    【解决方案1】:

    确保您已在类路径中包含所需的 jar 文件。正如你所说,它在你的本地工作,那么我猜你做到了。如果它在实际服务器上不起作用,请确保您已部署所需的 jar。

    【讨论】:

    • 你的意思是java类路径还是Hive类路径? .jar 文件位于 HIVE/lib 目录中。我还有一个 $JAVA_HOME 环境变量设置为系统 java 安装。
    • 尝试将它添加到您的 java 类路径中。您可以通过转到项目属性,然后转到 Java 构建路径,然后添加外部 Jar 来做到这一点。 stackoverflow.com/questions/11463354/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 2016-02-09
    • 2020-07-08
    相关资源
    最近更新 更多