java.lang.noclassdeffounderror与hbase扫描

vm0i2vca  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(395)

我正在尝试运行mapreduce作业来扫描hbase表。目前我使用的是cloudera4.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>

其中,jar列表包含/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

在输出中。在我看来一切正常。我不明白为什么说扫描没有定义。我传递了正确的jar,它包含了类。
感谢您的帮助。

fkvaft9z

fkvaft9z1#

设置hadoop\u classpath变量修复了这个问题:

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

相关问题