java.lang.NoSuchMethodError:org.apache.hive.service.cli.TableSchema

时间:2018-07-19 10:37:31

标签: java hive

我正在尝试使用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

请帮助我。

1 个答案:

答案 0 :(得分:0)

该错误可能是由不兼容的库版本引起的。您的项目中具有同一个库的多个jar版本。因此,在运行时不会明确使用开关一。 删除重复项,仅使用hadoop-commonhive-service的较新版本。