2012-12-05 12 views
8

Sono di fronte a un problema con l'esecuzione di un semplice esempio di Hbase.Come eseguire l'esempio di Hbase Java?

Ho creato su HbaseTest.java che crea una tabella e inserisce alcuni record. In Unix, posso compilare la classe java. di.

$ javac -classpath HBase-0.94.2.jar: Hadoop-core-1.0.4.jar HBaseTest.java

ma io non sono in grado di eseguire questo programma: $ java -classpath hbase- 0.94.2.jar: hadoop-core-1.0.4.jar HBaseTest

Il comando sopra indicato non funziona per me. Non sei sicuro di quale sia il problema? È il modo corretto di eseguire l'esempio di Hbase Java?

+1

Cosa intendi con "non funziona per me"? Messaggio di errore? Non fa nulla? –

+0

funziona la shell di hbase? in caso contrario, è necessario verificare l'installazione e riavviare hbase – Pixou

+0

durante l'esecuzione di questo comando. Viene visualizzato l'errore seguente: $ java -classpath hbase-0.94.2.jar: /scratch/hadoop-1.0.4/hadoop-core-1.0.4 .jar HBaseTest Eccezione nel thread "main" java.lang.NoClassDefFoundError:/scratch/hadoop-1/0/4/hadoop-core-1/0/4/jar Causato da: java.lang.ClassNotFoundException: .scratch .hadoop-1.0.4.hadoop-core-1.0.4.jar su java.net.URLClassLoader $ 1.run (URLClassLoader.java:202) ... su java.lang.ClassLoader.loadClass (ClassLoader.java : 246) Impossibile trovare la classe principale: /scratch/hadoop-1.0.4/hadoop-core-1.0.4.jar. Il programma uscirà. –

risposta

16

È possibile utilizzare "classpath hbase" per ottenere il percorso di classe necessario.

 
    /* 
    * Compile and run with: 
    * javac -cp `hbase classpath` TestHBase.java 
    * java -cp `hbase classpath` TestHBase 
    */ 
    import org.apache.hadoop.conf.Configuration; 
    import org.apache.hadoop.hbase.*; 
    import org.apache.hadoop.hbase.client.*; 
    import org.apache.hadoop.hbase.util.*; 

    public class TestHBase { 
     public static void main(String[] args) throws Exception { 
      Configuration conf = HBaseConfiguration.create(); 
      HBaseAdmin admin = new HBaseAdmin(conf); 
      try { 
       HTable table = new HTable(conf, "test-table"); 
       Put put = new Put(Bytes.toBytes("test-key")); 
       put.add(Bytes.toBytes("cf"), Bytes.toBytes("q"), Bytes.toBytes("value")); 
       table.put(put); 
      } finally { 
       admin.close(); 
      } 
     } 
    } 
+2

Sì. Funziona 1. Hbase/bin $./Hbase classpath 2. Ho ottenuto una stringa molto grande per classpath che contiene tutto il percorso necessario per eseguire il programma 3. $ java% hbase classpath di string (step 2) .... Ora funziona :) –

+0

Questo funziona. Sia la fonte che le istruzioni per compilare ed eseguire, sia su hbase normale che su hbase-slider-app. 'hbase classpath' restituisce una stringa molto grande, contenente quasi tutto in $ {hbase_home}/lib, e hbase/conf e hadoop/conf, ecc. –

1

Se non riesce a funzionare si potrebbe, se possibile, utilizzare un IDE come NetBeans per sviluppare programmi API client Java HBase.

  • Dopo l'apertura di NetBeans, andare in Strumenti => Biblioteche e fare clic su 'Nuovo Library' e dargli un nome come 'MapReduce'.
  • dargli un nome e quindi fare clic su Aggiungi JAR/cartella e selezionare il file JAR richiesti , tipicamente sotto /usr/local/hadoop-2.x.x/share/hadoop per le librerie Hadoop e /usr/local/hbase-1.x.x/lib per le librerie HBase, navigando il browser file system (o semplicemente navigare verso la directory di installazione) . Maiusc + i tasti freccia funzionano per selezionare i file jar di massa.
  • Ora creare un nuovo progetto Java come al solito e fare clic con il pulsante destro del mouse sul riquadro del progetto e andare su "Proprietà".
  • Ora fai clic su Librerie => Aggiungi libreria e seleziona la tua libreria dall'elenco visualizzato. Dovresti essere in grado di compilare ed eseguirli ora, dato che hai tutti i processi in esecuzione.