mapreduce与hbase整合

关于mapreduce和hbase的整合

Map

    protected void map(ImmutableBytesWritable key, Result result, Context context) throws IOException, InterruptedException {
     /**
     *
     * @param key  我们的主键rowkey
     * @param value  我们一行数据所有列的值都封装在value里面了
     * @param context
     * @throws IOException
     * @throws InterruptedException
     */
        String rowKey = Bytes.toString(key.get());
        if(rowKey.compareTo("50") < 0){
            return;
        }
        Put put = new Put(key.get());
        Cell[] cells = result.rawCells();
        for (Cell cell : cells) {
            put.add(cell);
        }
        mkey.set(rowKey);
        context.write(mkey,put);
    }

Reduce

    protected void reduce(Text key, Iterable<Put> puts, Context context) throws IOException, InterruptedException {
        for (Put put : puts) {
            context.write(NullWritable.get(),put);
        }
    }

Driver

static Connection connection;

public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
    Configuration configuration = HBaseConfiguration.create();
    configuration.set("hbase.zookeeper.quorum", "node01,node02,node03");
    connection = ConnectionFactory.createConnection(configuration);
    Admin admin = connection.getAdmin();
    //命名空间
    NamespaceDescriptor.Builder builder = NamespaceDescriptor.create("habse_result");
    NamespaceDescriptor hbase_result = builder.build();
    admin.createNamespace(hbase_result);
    //表的描述
    HTableDescriptor hbase_comments_result = new 
    HTableDescriptor(TableName.valueOf("hbase_result:hbase_video_ori_result"));
    //给表创建列族:info
    HColumnDescriptor info = new HColumnDescriptor("info");
    hbase_comments_result.addFamily(info);
    //创建表
    admin.createTable(hbase_comments_result);
    admin.close();
    connection.close();
    Job job = Job.getInstance(configuration,"HbaseAPI3");
    /*Map的初始化*/
    TableMapReduceUtil.initTableMapperJob("hive_hbase_video",
            new Scan(),
            Mapper.class,
            Text.class,
            Put.class,
            job);
            /*Reduce的初始化*/
    TableMapReduceUtil.initTableReducerJob("hbase_result:hbase_video_ori_result", Reducer.class,job);
    job.waitForCompletion(true);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值