算法需要读取整个文件作为一个分片,因此自定义了WholeFileInputFormat类和WholeFileRecordReader类用于实现一个map能够读取一整个文件。
Configuration类实例化的对象和HBaseConfiguration类实例化的对象作用不同,我遇到的问题是:若是只用Configuration类创建的对象conf,则job任务可以提交成功,输入分片也成功,但是在map方法执行的过程中会报错如下(
java.lang.ClassNotFoundException: org.apache.hadoop.hbase.HTable
),若是用HBaseConfiguration类创建的对象,则会报错找不到WholeFileInputFormat类。
所以在main函数中我们创建了Configuration类的对象conf,在mapper类的setup()方法中重新实例化了一个HBaseConfiguration类的对象,从而达到要求。
package hbasetest;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.