hadoop之map结果写入hbase数据库,无reduce

博客介绍了如何处理Hadoop MapReduce任务中将整文件读入Map并写入HBase数据库时遇到的ClassNotFoundException问题。通过自定义WholeFileInputFormat和WholeFileRecordReader解决了分片问题,而在运行时由于Configuration和HBaseConfiguration对象的使用不当导致错误。解决方案是在main方法中使用Configuration对象初始化,在Mapper的setup方法中使用HBaseConfiguration对象确保类路径正确。
摘要由CSDN通过智能技术生成

    算法需要读取整个文件作为一个分片,因此自定义了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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值