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 を渡すと、クラスが含まれています。
どんな助けでも大歓迎です。