我正在尝试使用java连接到hive。这是我的密码。我在氧气中运行。我的java版本是8。
private static String driverName = "org.apache.hive.jdbc.HiveDriver";
public static void main(String[] args) throws SQLException
{
try
{
Class.forName(driverName);
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
System.exit(1);
}
Connection con = DriverManager.getConnection("jdbc:hive2://<ip>:<port>/database", "username", "password");
String sql = "select * from tablename";
Statement stmt = con.createStatement();
stmt.executeQuery(sql);
}
我可以使用上述方法创建表并将数据插入表中。但每当我试图从表中检索数据时,它就会抛出以下错误。
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hive.service.cli.TableSchema.<init>(Lorg/apache/hive/service/cli/thrift/TTableSchema;)
下面是我正在使用的jar。他们有错误中给出的类。
commons-logging-1.2
curator-client-2.0.0-incubating
hadoop-common-2.7.3
hadoop-common-3.1.0
hive-exec-3.0.0
hive-jdbc-1.1.0
hive-metastore-3.0.0
hive-service-1.1.0
hive-service-3.0.0
hive-service-rpc-2.1.0
httpclient-4.5.6
httpcore-4.4.10
libfb303-0.9.3
libthrift-0.9.3
log4j-1.2.17
slf4j-api-1.8.0-beta2
请帮帮我。
1条答案
按热度按时间6ovsh4lw1#
错误可能是由不兼容的库版本引起的。您的项目中有相同libs的多个jar版本。因此,在运行时,不清楚是否使用了开关1。去掉重复的,只使用更新版本的
hadoop-common
,hive-service
.