远程访问配置单元

时间:2015-09-08 10:34:49

标签: hadoop hive

我正在研究Hive。我想通过Hive JDBC访问Hive表。我正在使用的代码如下:

public class HiveJdbcClient {

private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";

public static void main(String[] args) throws SQLException {

    try {
        Class.forName(driverName);
    }catch(ClassNotFoundException e){
        e.printStackTrace();
        System.exit(1);
    }

    Connection connection = DriverManager.getConnection("jdbc:hive2://aaaa:10000", "" , "");
    Statement statement = connection.createStatement();
    String tableName = "tmp_ext_h;

    /**
     * SELECT* QUERY 
     * */
    String sql = "select * from " + tableName;
    System.out.println("Running: " + sql);
    ResultSet result = statement.executeQuery(sql);
    while (result.next()){
        System.out.println(String.valueOf(result.getInt(1)) + "\t" + result.getString(2));

    }

    /**
     * REGULAR HIVE QUERY
     * */ 
    sql = "select count(1) from " + tableName;
    System.out.println("Running: " + sql);
    result = statement.executeQuery(sql);
    while (result.next()){
        System.out.println(result.getString(1));
    }
}
}

我的图书馆是:

hive-jdbc.jar"
hive-exec.jar"

hive-metastore.jar"

hive-service.jar"

libthrift-0.9.0.jar"

mysql-connector-java.jar"

在运行时,我收到错误:

Exception in thread "main" java.lang.NoClassDefFoundError: com/facebook/fb303/FacebookService$Iface
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.apache.hadoop.hive.jdbc.HiveDriver.connect(HiveDriver.java:106)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at hadoop_HiveConnector.HiveJdbcClient.main(HiveJdbcClient.java:28)
enter code here

有人知道这是什么问题吗?我是Hive的新手

感谢。

1 个答案:

答案 0 :(得分:2)

根据此http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/HiveJDBCDriver.html

Hive 0.13需要以下罐子:

hive_metastore.jar
hive_service.jar
HiveJDBC3.jar
libfb303-0.9.0.jar
libthrift-0.9.0.jar
log4j-1.2.14.jar
ql.jar
slf4j-api-1.5.8.jar
slf4j-log4j12-1.5.8.jar
TCLIServiceClient.jar

然而,它会因环境和版本而改变。在你的情况下,你至少缺少libfb303-*.jar