Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过JDBC连接到配置单元时发生Java NoSuchMethodError_Java_Hadoop_Jdbc_Hive_Thrift - Fatal编程技术网

通过JDBC连接到配置单元时发生Java NoSuchMethodError

通过JDBC连接到配置单元时发生Java NoSuchMethodError,java,hadoop,jdbc,hive,thrift,Java,Hadoop,Jdbc,Hive,Thrift,在Eclipse中尝试从一个简单的java程序连接到配置单元时,我遇到以下错误。看起来它连接了,然后抛出了这个错误。我可以通过直线本地连接到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

在Eclipse中尝试从一个简单的java程序连接到配置单元时,我遇到以下错误。看起来它连接了,然后抛出了这个错误。我可以通过直线本地连接到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)
hive jdbc*.jar 1.2.0
配置单元服务*.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.1.7.5
commons-logging-1.0.4.jar 1.1.3
线程“main”java.lang.NoSuchMethodError中出现异常:org.apache.thrift.protocol.getScheme()Ljava/lang/Class;
位于org.apache.hive.service.cli.thrift.TCLIService$OpenSession_args.write(TCLIService.java:1854)
位于org.apache.thrift.TServiceClient.sendBase(TServiceClient.java:63)
位于org.apache.hive.service.cli.thrift.TCLIService$Client.send_OpenSession(TCLIService.java:150)
位于org.apache.hive.service.cli.thrift.TCLIService$Client.OpenSession(TCLIService.java:142)
位于org.apache.hive.jdbc.HiveConnection.openSession(HiveConnection.java:578)
位于org.apache.hive.jdbc.HiveConnection。(HiveConnection.java:192)
位于org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105)
位于java.sql.DriverManager.getConnection(未知源)
位于java.sql.DriverManager.getConnection(未知源)
Apache将我使用的libthrift版本列为具有getScheme()方法


任何帮助都将不胜感激

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

您是指java类路径还是Hive类路径?.jar文件位于HIVE/lib目录中。我还将$JAVA_HOME环境变量设置为system JAVA install。请尝试将其添加到JAVA类路径中。您可以通过转到项目属性,然后转到Java构建路径,然后添加外部JAR来实现这一点。