Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Access hive remotely

Tags:

hadoop

hive

I am working on Hive. I want to access Hive table via Hive JDBC. The code I'm using is below :

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));
    }
}
}

and my Libraries are :

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

hive-metastore.jar"

hive-service.jar"

libthrift-0.9.0.jar"

mysql-connector-java.jar"

While running this, I get the ERROR :

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

Does anybody know what is the problem? I'm new on Hive

Thanks.

like image 975
Shakile Avatar asked Feb 17 '26 20:02

Shakile


1 Answers

According to this http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/HiveJDBCDriver.html

You need the following jars for 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

However it changes by environment and version. In your case at the least you're missing libfb303-*.jar

like image 111
mattinbits Avatar answered Feb 20 '26 17:02

mattinbits



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!