3

MapReduce ジョブを実行して HBase テーブルをスキャンしようとしています。現在、Cloudera 4.4 に付属しているバージョン 0.94.6 の HBase を使用しています。プログラムのある時点で Scan() を使用し、次のように適切にインポートします。

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

それはうまくコンパイルされ、jarファイルも作成できます。hbase classpath-cp オプションの値としてを渡します。プログラムを実行すると、次のメッセージが表示されます。

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

次を使用してコードを実行します。

hadoop jar my_program.jar MyJobClass -libjars <list_of_jars>

list_of_jars には /opt/cloudera/parcels/CDH/lib/hbase/hbase.jar が含まれています。念のため、hbase.jar に Scan が含まれていることを確認しました。私はそれを行います:

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

そして、私は次の行を見ることができます:

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

出力で。私にはすべて問題ないように見えます。Scan が定義されていないと言っている理由がわかりません。正しい jar を渡すと、クラスが含まれています。

どんな助けでも大歓迎です。

4

1 に答える 1

6

HADOOP_CLASSPATH 変数を設定すると、問題が修正されました。

export HADOOP_CLASSPATH=`/usr/bin/hbase classpath`
于 2013-10-25T03:52:35.577 に答える