hbase mapReduce操作

需求:将学生表的相关数据的部分列导入到另一张表中

学生表的数据参考我的上一篇博客 https://blog.csdn.net/fanghailiang2016/article/details/107218724

map类负责将原始表的每一行按照需求解析成put对象

public class TestHbaseMapper extends TableMapper<ImmutableBytesWritable, Put> {
    @Override
    protected void map(ImmutableBytesWritable key, Result value, Context context) throws IOException, InterruptedException {
        Put put = new Put(key.get());
        for (Cell cell : value.rawCells()){
            if ("info".equals(Bytes.toString(CellUtil.cloneFamily(cell)))){
                if("name".equals(Bytes.toString(CellUtil.cloneQualifier(cell)))){
                    put.add(cell);
                }
            }
        }

        context.write(key, put);
    }
}

driver类整合map和reduce

public class TestHbaseDriver extends Configured implements Tool {
    @Override
    public int run(String[] args) throws Exception {

        Scan scan = new Scan();

        Job job = Job.getInstance(this.getConf(), "import_hbase_data");
        job.setJarByClass(TestHbaseDriver.class);
        TableMapReduceUtil.initTableMapperJob(
                "test:student",
                scan,
                TestHbaseMapper.class,
                ImmutableBytesWritable.class,
                Put.class,
                job
        );
        TableMapReduceUtil.initTableReducerJob(
                "test:student2",
                null,
                job
        );
        job.setNumReduceTasks(1);
        return job.waitForCompletion(true) ? 0 : 1;
    }
}

main方法:

    public static void main(String[] args) {
        Configuration conf = HBaseConfiguration.create();
        try {
            int status = ToolRunner.run(conf, new TestHbaseDriver(), args);
            System.exit(status);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mustafa3264

扔个包子砸我一下吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值