2013-04-22 81 views
4

如何從命令行運行下面的代碼?如何運行HBase程序

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 MyHBase { 
    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(); 
     } 
    } 
} 

如何設置我的hbase類路徑?我在我的類路徑中獲得了一個巨大的字符串。

UPDATE

root# vi MyHBase.java 
hbase-0.92.2 root# java -classpath `hbase classpath`:./ /var/root/MyHBase 
-sh: hbase: command not found 
Exception in thread "main" java.lang.NoClassDefFoundError: /var/root/MyHBase 
Caused by: java.lang.ClassNotFoundException: .var.root.MyHBase 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    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) 

我能夠做

hbase-0.92.2 root# bin/hbase shell 
HBase Shell; enter 'help<RETURN>' for list of supported commands. 
Type "exit<RETURN>" to leave the HBase Shell 
Version 0.92.2, r1379292, Fri Aug 31 13:13:53 UTC 2012 

hbase(main):001:0> exit 

難道我做錯了什麼?

+0

HBase有很多依賴關係,這將是一個很長的字符串。 – 2013-04-22 11:54:13

+0

'java -classpath' doe不工作? – ericson 2013-04-22 12:52:45

回答

7

你也可以做這樣的事情: -

# export HADOOP_CLASSPATH=`./hbase classpath` 

,然後在罈子捆綁這個Java到這樣的Hadoop集羣中運行它: -

#hadoop jar <jarfile> <mainclass> 
+0

這很好 – myloginid 2016-08-31 11:07:12

5

使用此

java -classpath `hbase classpath`:./ MyHBase 

這將讓整個類路徑字符串HBase的使用,並增加了當前目錄,以及到classpath中。

乾杯 抹布

+0

我在做什麼錯誤的更新。 – 2013-04-23 04:23:40

+1

你不能像這樣執行一個類。類文件存在的路徑需要放在類路徑中。從類文件所在的目錄執行相同的命令。或者,您可以將/ var/root添加到類路徑中。 – Rags 2013-04-23 13:45:00

+0

我試過javac -cp'hbase classpath' MyHBase.java java -cp'hbase classpath' MyHBase bt not working。顯示hbase:命令未找到 – 2013-04-25 04:12:36