I am simply using HBase API, not doing any Map-reduce work on it.

Following is the code I have written , simply creating the file on HBase:

import java.io.IOException;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;

public class ExampleClient {
 public static void main(String args []) throws IOException
 {
  HBaseConfiguration config = new HBaseConfiguration();

  HBaseAdmin admin = new HBaseAdmin(config);
  HTableDescriptor htd = new HTableDescriptor("test");
  HColumnDescriptor hcd = new HColumnDescriptor("data");
  htd.addFamily(hcd);
  admin.createTable(htd);

  byte [] tablename = htd.getName();
  HTableDescriptor [] tables = admin.listTables();

  if(tables.length !=1 && Bytes.equals(tablename, tables[0].getName()))
  {
   throw new IOException("Failed to create table");
  }

  HTable table = new HTable(config,tablename);
  byte[] row1 = Bytes.toBytes("row1");
  Put p1 = new Put(row1);
  byte[] databytes = Bytes.toBytes("data");
  p1.add(databytes,Bytes.toBytes("1"),Bytes.toBytes("value1"));
  table.put(p1);

  Get g = new Get(row1);
  Result result = table.get(g);
  System.out.println("Get : "+ result);
  Scan scan = new Scan();
  ResultScanner scanner = table.getScanner(scan);
  try
  {
   for(Result scannerResult: scanner)
   {
    System.out.println("Scan : " + scannerResult);
   }
  }catch(Exception e ){
   e.printStackTrace();
  }
  finally{
   scanner.close();
  }
  table.close();
 }
}

Now I have set the classpath variable in /etc/environment as
MYCLASSPATH="/usr/local/hadoop/hadoop/hadoop-0.20.2-core.jar:/usr/local/hadoop/hbase/hbase/hbase-0.20.6.jar:/usr/local/hadoop/hbase/hbase/lib/zookeeper-3.2.2.jar

now I am compiling my code with javac command

*$javac -classpath $MYCLASSPATH ExampleClient.java*

It is working fine.
While running, I am using java command

*$java -classpath $MYCLASSPATH ExampleClient*, then I am getting the
following error :
Exception in thread "main" java.lang.NoClassDefFoundError: ExampleClient
Caused by: java.lang.ClassNotFoundException: ExampleClient
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: ExampleClient. Program will exit.
But I am running the code from the same location. and ExampleClient.class
file exists at that location.





On Tue, May 24, 2011 at 3:07 PM, Kleegrewe, Christian <
christian.kleegr...@siemens.com> wrote:

> How do you execute the client (command line) do you use the java or the
> hadoop command?
> It seems that there is an error in your classpath when running the client
> job. The classpath when compiling classes that implement the client is
> different from the classpath when your client is executed since hadoop and
> hbase carry their own environment. Maybe tha following link helps:
>
>
> http://hbase.apache.org/docs/current/api/org/apache/hadoop/hbase/mapreduce/package-summary.html#classpath
>
>
> regards
> Christian
>
> ---------------8<--------------------------------
>
> Siemens AG
> Corporate Technology
> Corporate Research and Technologies
> CT T DE IT3
> Otto-Hahn-Ring 6
> 81739 München, Deutschland
> Tel.: +49 (89) 636-42722
> Fax: +49 (89) 636-41423
> mailto:christian.kleegr...@siemens.com
>
> Siemens Aktiengesellschaft: Vorsitzender des Aufsichtsrats: Gerhard Cromme;
> Vorstand: Peter Löscher, Vorsitzender; Wolfgang Dehen, Brigitte Ederer, Joe
> Kaeser, Barbara Kux, Hermann Requardt, Siegfried Russwurm, Peter Y.
> Solmssen; Sitz der Gesellschaft: Berlin und München, Deutschland;
> Registergericht: Berlin Charlottenburg, HRB 12300, München, HRB 6684;
> WEEE-Reg.-Nr. DE 23691322
>
>
> -----Ursprüngliche Nachricht-----
> Von: praveenesh kumar [mailto:praveen...@gmail.com]
> Gesendet: Dienstag, 24. Mai 2011 11:08
> An: common-user@hadoop.apache.org
> Betreff: How to compile HBase code ?
>
> Hello guys,
>
> In case any of you are working on HBASE, I just wrote a program by reading
> some tutorials..
> But no where its mentioned how to run codes on HBASE. In case anyone of you
> has done some coding on HBASE , can you please tell me how to run it.
>
> I am able to compile my code by adding hbase-core.jar and hadoop-core.jar
> in
> classpath while compiling it.
> But not able to figure out how to run it.
>
> Whenever I am doing java ExampleClient ( which is my Hbase program), I am
> getting the following error :
>
> Exception in thread "main" java.lang.NoClassDefFoundError:
> org/apache/hadoop/hbase/HBaseConfiguration
>        at ExampleClient.main(ExampleClient.java:20)
> Caused by: java.lang.ClassNotFoundException:
> org.apache.hadoop.hbase.HBaseConfiguration
>        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
>        at java.security.AccessController.doPrivileged(Native Method)
>        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
>        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
>        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
>        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
>        ... 1 more
> Thanks,
> Praveenesh
>

Reply via email to