我正在尝试使用Java连接到配置单元。这是我的代码。我正在Eclipse Oxygen中运行它。我的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;)
下面是我正在使用的罐子。他们有错误中给出的类。
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
请帮助我。
答案 0 :(得分:0)
该错误可能是由不兼容的库版本引起的。您的项目中具有同一个库的多个jar版本。因此,在运行时不会明确使用开关一。
删除重复项,仅使用hadoop-common
,hive-service
的较新版本。