2013-10-24 56 views
3

我試圖運行MapReduce作業來掃描HBase表。目前我正在使用Cloudera 4.4附帶的HBase版本0.94.6。我在程序某些時候,我使用掃描(),和我正確地導入:使用HBase掃描的java.lang.NoClassDefFoundError

import org.apache.hadoop.hbase.client.Scan; 

它編譯好,我能夠創建一個jar文件了。我通過將hbase classpath作爲-cp選項的值來執行此操作。當運行該程序,我得到以下信息:

hadoop jar my_program.jar MyJobClass -libjars <list_of_jars> 

其中list_of_jars包含/opt/cloudera/parcels/CDH/lib/hbase/hbase.jar:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/client/Scan 

我使用運行代碼。爲了仔細檢查,我確認了hbase.jar包含Scan。我這樣做,有:

jar tf /opt/cloudera/parcels/CDH/lib/hbase/hbase.jar 

而且我看行:

org/apache/hadoop/hbase/client/Scan.class 

輸出。所有看起來都對我好。我不明白爲什麼說掃描沒有定義。我傳遞了正確的jar,它包含了這個類。

任何幫助表示讚賞。

回答

6

設置HADOOP_CLASSPATH變量固定的問題:

export HADOOP_CLASSPATH=`/usr/bin/hbase classpath` 
+0

如何設置它在Windows ??? – Backtrack

+1

我需要在哪個文件中設置上述類路徑? –

+0

改變〜/ .bash_profile'export HADOOP_CLASSPATH ='depend_on_you_machine/bin/hbase classpath – hakunami