hbase-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Harsh J <ha...@cloudera.com>
Subject Re: How to compile HBase code ?
Date Tue, 24 May 2011 10:25:33 GMT
Praveenesh,

HBase has their own user mailing lists where such queries ought to go.
Am moving the discussion to user@hbase.apache.org and bcc-ing
common-user@ here. Also added you to cc.

Regarding your first error, going forward you can use the useful
`hbase classpath` to generate a HBase-provided classpath list for you
automatically. Something like:

$ MYCLASSPATH=`hbase classpath`

Regarding the second, latest one as below, your ExampleClient.class
isn't on the MYCLASSPATH (nor is the directory it is under, i.e. '.')
so Java can't really find it. This is not a HBase issue.

HTH.

On Tue, May 24, 2011 at 3:23 PM, praveenesh kumar <praveenesh@gmail.com> wrote:
> 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.kleegrewe@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.kleegrewe@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:praveenesh@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
>>
>



-- 
Harsh J

Mime
View raw message