版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengtanyong4777/article/details/88551060
1.前言
由于最近需要将海量的历史数据从Mysql迁移到Hbase中,所以使用了较为高效的ImportTsv和bulkload。
2.问题
在使用ImportTsv将数据转成HFile文件后,使用bulkload的时候报如下错误
java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/filter
3.解决
通过百度知道是因为HADOOP_CLASSPATH中没有导入HBASE_HOME/lib下的jar包导致。所以解决的方法有一下两种
(1)修改hadoop的hadoop-env文件,在HADOOP_CLASSPATH后面加上HBASE_HOME/lib下的所有jar包。但是由于我使用了Ambari搭建的集群,所以修改完配置文件后需要重启线上集群,感觉有点没必要。
(2)在运行bulkload之前,手动执行export HADOOP_CLASSPATH=/usr/hdp/2.6.5.0-292/hbase/lib/*,将HBASE_HOME/lib的jar包export到HADOOP_CLASSPATH上,然后再运行bulkload命令即可。