hive-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Aniket Mokashi <aniket...@gmail.com>
Subject Re: Error while executing program with Hive JDBC
Date Thu, 26 Apr 2012 07:35:48 GMT
put libthrift and libfb303 jars on classpath.

Thanks,
Aniket

On Wed, Apr 25, 2012 at 11:14 PM, Bhavesh Shah <bhavesh25shah@gmail.com>wrote:

> Hello all,
> I have written this small program But I am getting error.
>
> Program:
> -------------
> import java.io.FileWriter;
> import java.io.InputStream;
> import java.sql.Connection;
> import java.sql.DriverManager;
> import java.sql.ResultSet;
> import java.sql.Statement;
> import java.text.DateFormat;
> import java.text.SimpleDateFormat;
> import java.util.Calendar;
> import java.util.Date;
>
>
> public class SampleHiveProgram
> {
>    String lyear="";
>    String lquarter="";
>    String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
>    public static void main(String[] args)
>    {
>        SampleHiveProgram s=new SampleHiveProgram();
>        s.startHiveThriftServer();
>        s.quarterTable();
>    }
>
>    public void startHiveThriftServer()
>    {
>        try
>        {
>            String cmd =
> "/home/hadoop/sqoop-1.3.0-cdh3u1/bin/StartHiveThriftServer.sh"; // this is
> the command to execute in the Unix shell
>            // create a process for the shell
>            ProcessBuilder pb = new ProcessBuilder("bash", "-c", cmd);
>            pb.redirectErrorStream(true); // use this to capture messages
> sent to stderr
>            Process shell = pb.start();
>            InputStream shellIn = shell.getInputStream(); // this captures
> the output from the command
>            // wait for the shell to finish and get the return code
>            // at this point you can process the output issued by the
> command
>            // for instance, this reads the output and writes it to
> System.out:
>            int c;
>            while ((c = shellIn.read()) != -1)
>            {
>                System.out.write(c);
>            }
>            int shellExitStatus = shell.waitFor();
>            // close the stream
>            shellIn.close();
>        }
>        catch(Exception e)
>        {
>            e.printStackTrace();
>            System.exit(1);
>        }
>    }
>
>    public void quarterTable()
>    {
>        try
>        {
>            String start="2010-01-01";
>            String end="2011-01-01";
>            System.out.println("in quarter table...");
>            //create connection with database
>            Class.forName(driverName);
>            Connection con =
> DriverManager.getConnection("jdbc:hive://localhost:10000/default", "", "");
>            String sql=null;
>            Statement stmt = con.createStatement();
>            ResultSet res=null;
>
>            sql="drop table TmpQuarterTable";
>            System.out.println("Dropping the Quarter Table...");
>            res = stmt.executeQuery(sql);
>
>            //Creating Quarter Table
>            sql="create table TmpQuarterTable (year string, quarter string,
> quarterstart string, quarterend string, quartername string)" +
>                " ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES
> TERMINATED BY '\012' STORED AS TEXTFILE ";
>            System.out.println("Creating the Quarter Table...");
>            res = stmt.executeQuery(sql);
>
>            //create the file
>            FileWriter fw=new FileWriter("/home/hadoop/Quarter.txt");
>
>            //convert string date to calendar date
>            DateFormat formatter =new SimpleDateFormat("yyyy-MM-dd");
>            Date sdate=(Date)formatter.parse(start);
>            Date edate=(Date)formatter.parse(end);
>
>            Calendar c1=Calendar.getInstance();
>            Calendar c2=Calendar.getInstance();
>
>            c1.setTime(sdate);
>            c2.setTime(edate);
>
>            int q=0;
>            String QuarterEndDate=null;
>            int resultMonthCount=0;
>            int resultYear =0;
>            int resultMonth =0;
>
>            Calendar c3=Calendar.getInstance();
>            c3.setTime(c1.getTime());
>            while(c3.compareTo(c2)<=0)
>            {
>                      if(c3.get(Calendar.MONTH)>=0 &&
> c3.get(Calendar.MONTH)<=2)
>                      {
>                          q=1;
>
> QuarterEndDate=Integer.toString(c3.get(Calendar.YEAR))+"-04-01";
>                      }
>                      else if(c3.get(Calendar.MONTH)>=3 &&
> c3.get(Calendar.MONTH)<=5)
>                      {
>                          q=2;
>
> QuarterEndDate=Integer.toString(c3.get(Calendar.YEAR))+"-07-01";
>                      }
>                      else if(c3.get(Calendar.MONTH)>=6 &&
> c3.get(Calendar.MONTH)<=8)
>                      {
>                          q=3;
>
> QuarterEndDate=Integer.toString(c3.get(Calendar.YEAR))+"-10-01";
>                      }
>                      else if(c3.get(Calendar.MONTH)>=9 &&
> c3.get(Calendar.MONTH)<=11)
>                      {
>                          q=4;
>
> QuarterEndDate=Integer.toString(c3.get(Calendar.YEAR)+1)+"-01-01";
>                      }
>                      //Got the QuarterEndDate (YYYY-MM-DD)
>                      //split the QuarterEndDate into qdate and create
> quarter_end_date
>                      String[] qdate=QuarterEndDate.split("-");
>                      Calendar quarter_end_date=Calendar.getInstance();
>
>
> quarter_end_date.set(Integer.parseInt(qdate[0]),Integer.parseInt(qdate[1]),Integer.parseInt(qdate[2]));
>                      System.out.println("quarter_end_date :
> "+quarter_end_date);
>
>                      //YY
>                      String YY=Integer.toString(c3.get(Calendar.YEAR));
>
>                      //quarter start date = quarter end date - 1
>                      Calendar quarter_start_date=Calendar.getInstance();
>
>
> quarter_start_date.set(quarter_end_date.get(Calendar.YEAR),quarter_end_date.get(Calendar.MONTH),quarter_end_date.get(Calendar.DATE));
>                      quarter_start_date.add(Calendar.YEAR, -1);
>
>                      //year
>                      String
> year=Integer.toString(quarter_start_date.get(Calendar.YEAR));
>                      System.out.println("year : "+year);
>
>                      //month
>                      String months=null;
>                      if(quarter_start_date.get(Calendar.MONTH)<10)
>
> months="0"+Integer.toString(quarter_start_date.get(Calendar.MONTH));
>                      else
>
> months=Integer.toString(quarter_start_date.get(Calendar.MONTH));
>                      System.out.println("month : "+months);
>
>                      //day
>                      String day=null;
>                      if(quarter_start_date.get(Calendar.DATE)<10)
>
> day="0"+Integer.toString(quarter_start_date.get(Calendar.DATE));
>                      else
>
> day=Integer.toString(quarter_start_date.get(Calendar.DATE));
>                      System.out.println("day : "+day);
>
>
>                      //adding 3 months
>                      resultMonthCount = c3.get(Calendar.MONTH) + 3;
>                      resultYear =  c3.get(Calendar.YEAR);
>                      resultMonth = resultMonthCount - resultYear * 12;
>
>                      System.out.println("YEAR : "+resultYear);
>                      c3.set(Calendar.YEAR, resultYear);
>
>                      System.out.println("MONTH : "+resultMonthCount);
>                      c3.set(Calendar.MONTH, resultMonthCount);
>                      System.out.println("c3 : "+c3.getTime());
>
>                      //YY,q,startDate,endDate,quartername   ------->>
> write to file
>                      String QuarterStartDate=year+"-"+months+"-"+day;
>
>                      String quarterName=YY+"\"Q\""+q;
>
>
> fw.write(YY+","+q+","+QuarterStartDate+","+QuarterEndDate+","+quarterName+"\n");
>
>            }//end of while
>            fw.close();
>
>            String filepath = "/home/hadoop/Quarter.txt";
>            sql = "load data local inpath '" + filepath + "' overwrite into
> table TmpQuarterTable";
>            System.out.println("Running: " + sql);
>            stmt.executeUpdate(sql);
>        }
>        catch(Exception e)
>        {
>            e.printStackTrace();
>            System.exit(1);
>        }
>
>    }
> }
>
> Error as:
> xception in thread "main" java.lang.IncompatibleClassChangeError: class
> com.facebook.fb303.FacebookService$Client has interface
> org.apache.thrift.TServiceClient as super class
>    at java.lang.ClassLoader.defineClass1(Native Method)
>    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
>    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
>    at
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
>    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
>    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
>    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
>    at java.security.AccessController.doPrivileged(Native Method)
>    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
>    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
>    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
>    at java.lang.ClassLoader.defineClass1(Native Method)
>    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
>    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
>    at
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
>    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
>    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
>    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
>    at java.security.AccessController.doPrivileged(Native Method)
>    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
>    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
>    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
>    at java.lang.ClassLoader.defineClass1(Native Method)
>    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
>    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
>    at
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
>    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
>    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
>    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
>    at java.security.AccessController.doPrivileged(Native Method)
>    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
>    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
>    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
>    at java.lang.ClassLoader.defineClass1(Native Method)
>    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
>    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
>    at
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
>    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
>    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
>    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
>    at java.security.AccessController.doPrivileged(Native Method)
>    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
>    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
>    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
>    at
> org.apache.hadoop.hive.jdbc.HiveConnection.<init>(HiveConnection.java:93)
>    at org.apache.hadoop.hive.jdbc.HiveDriver.connect(HiveDriver.java:104)
>    at java.sql.DriverManager.getConnection(DriverManager.java:582)
>    at java.sql.DriverManager.getConnection(DriverManager.java:185)
>    at SampleHiveProgram.quarterTable(SampleHiveProgram.java:64)
>    at SampleHiveProgram.main(SampleHiveProgram.java:22)
>
> --
> Regards,
> Bhavesh Shah
>



-- 
"...:::Aniket:::... Quetzalco@tl"

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message