Thank you - nearly there now....

Server running!

 

But now....

 

I am getting following error:

Exception in thread "pool-1-thread-2" java.lang.NoSuchMethodError:
com.facebook.fb303.FacebookService$Processor$ProcessFunction.process(ILo
rg/apache/thrift/protocol/TProtocol;Lorg/apache/thrift/protocol/TProtoco
l;)V

        at
org.apache.hadoop.hive.service.ThriftHive$Processor.process(ThriftHive.j
ava:328)

        at
org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPool
Server.java:252)

        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecuto
r.java:885)

        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.ja
va:907)

        at java.lang.Thread.run(Thread.java:619)

 

I do have the hive libfb303.jar as part of the java class path - even
switched it with the hadoop libfb303.jar to see if that would work..

 

Again - any ideas???

 

Thank you

 

Ronan

 

 

From: Carl Steinbach [mailto:[email protected]] 
Sent: 14 December 2009 13:18
To: [email protected]
Subject: Re: connecting remotely to hive via jdbc

 

Hi Ronan,

Your JDBC connection is failing because there is nothing listening on
the other end. You have to start the Hive server and tell it which port
to listen on before you can connect to it. Directions describing how to
do this are located here: http://wiki.apache.org/hadoop/Hive/HiveServer

Thanks.

Carl

On Mon, Dec 14, 2009 at 4:28 AM, Ronan Tobin <[email protected]>
wrote:

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