带有HBase Scan的java.lang.NoClassDefFoundError

时间:2013-10-24 22:12:05

标签: java hadoop jar hbase

我正在尝试运行MapReduce作业来扫描HBase表。目前我使用的是Cloudera 4.4附带的HBase版本0.94.6。在我的程序中的某个时刻,我使用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,它包含了类。

感谢任何帮助。

1 个答案:

答案 0 :(得分:6)

设置HADOOP_CLASSPATH变量修复了问题:

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