Hi all 

I am totally new to hive.....

I am trying to get a remote connection to hive using jdbc.

I am using the example provided in the documentation.

I have copied all the jars required to my class path.

When I try to make a connection I get the following error:

 

ERROR exec.HiveHistory: Unable to create log directory /tmp/<my user
name>

Exception in thread "main" java.sql.SQLException:
org.apache.thrift.transport.TTransportException:
java.net.ConnectException: Connection refused: connect

      at
org.apache.hadoop.hive.jdbc.HiveDriver.connect(HiveDriver.java:111)

      at java.sql.DriverManager.getConnection(Unknown Source)

      at java.sql.DriverManager.getConnection(Unknown Source)

      at com.org.smedia.HiveJdbcClient.main(HiveJdbcClient.java:24)

 

I created a hdfs directory for /tmp/<my user name>

And chmod g+w for the directory.

But I still get the same error.

 

Class as follows:

 

import java.sql.SQLException;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.Statement;

import java.sql.DriverManager;

 

public class HiveJdbcClient {

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

 

  /**

   * @param args

   * @throws SQLException

   */

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

      try {

      Class.forName(driverName);

    } catch (ClassNotFoundException e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

      System.exit(1);

    }

    Connection con = DriverManager.getConnection("jdbc:hive://<my server
ip address>:10000/default", "", "");

    Statement stmt = con.createStatement();

    //String tableName = "testHiveDriverTable";

    //stmt.executeQuery("drop table " + tableName);

    //ResultSet res = stmt.executeQuery("create table " + tableName + "
(key int, value string)");

    // show tables

    //String sql = "show tables '" + tableName + "'";

    //System.out.println("Running: " + sql);

    //res = stmt.executeQuery(sql);

    //if (res.next()) {

      //System.out.println(res.getString(1));

    //}

    // describe table

    //sql = "describe " + tableName;

    //System.out.println("Running: " + sql);

    //res = stmt.executeQuery(sql);

    //while (res.next()) {

      //System.out.println(res.getString(1) + "\t" + res.getString(2));

    //}

 

    // load data into table

    // NOTE: filepath has to be local to the hive server

    // NOTE: /tmp/a.txt is a ctrl-A separated file with two fields per
line

    //String filepath = "/tmp/a.txt";

    //sql = "load data local inpath '" + filepath + "' into table " +
tableName;

    //System.out.println("Running: " + sql);

    //res = stmt.executeQuery(sql);

 

    // select * query

    String sql = "select * from <my table name>";

    System.out.println("Running: " + sql);

    ResultSet res = stmt.executeQuery(sql);

    while (res.next()) {

      System.out.println(String.valueOf(res.getInt(1)) + "\t" +
res.getString(2));

    }

 

    // regular hive query

    sql = "select count(1) from <my table name>";

    System.out.println("Running: " + sql);

    res = stmt.executeQuery(sql);

    while (res.next()) {

      System.out.println(res.getString(1));

    }

  }

}

 

Any ideas??

 

Thanks

 

R

 

Reply via email to