MapReduce on Hbase
admin
2023-02-07 22:40:03
0


org.apache.hadoop.hbase.mapreduce


TableMapper  TableReducer


一个region对应一个map

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Mutation;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;
import org.apache.hadoop.hbase.mapreduce.TableMapper;
import org.apache.hadoop.hbase.mapreduce.TableReducer;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Reducer;

public class HbaseMR {

    public class MyMapper extends TableMapper {

        @Override
        protected void map(ImmutableBytesWritable key, Result value,
                Context context) throws IOException, InterruptedException {
            // key代表rowkey
            Text k = new Text(Bytes.toString(key.get()));
            Text v = new Text(Bytes.toString(value.getValue(
                    "basicinfo".getBytes(), "age".getBytes())));

            context.write(v, k);

        }

    }

    public class MyReducer extends TableReducer {

        @Override
        protected void reduce(Text key, Iterable values, Context context)
                throws IOException, InterruptedException {
            Put put = new Put(Bytes.toBytes(key.toString()));
            for (Text value : values) {
                put.add(Bytes.toBytes("f1"), Bytes.toBytes(value.toString()),
                        Bytes.toBytes(value.toString()));
            }
            context.write(null, put);
        }

    }

    public static void main(String[] args) {
        Configuration conf=    HBaseConfiguration.create();
        try {
            Job job=new Job(conf, "mapreduce on hbase");
            job.setJarByClass(HbaseMR.class);
            Scan scan=new Scan();
            scan.setCaching(1000);//
            TableMapReduceUtil.initTableMapperJob("students", scan, MyMapper.class, Text.class, Text.class, job);
            TableMapReduceUtil.initTableReducerJob("student-age",  MyReducer.class,  job);
            job.waitForCompletion(true);
        } catch (Exception e) {
            
            e.printStackTrace();
        }
    }

}


相关内容

热门资讯

终于懂了“神皇牛牛辅助器?”(... 有 亲,根据资深记者爆料神皇牛牛是可以开挂的,确实有挂(咨询软件无需打开...
今日重大发现“欢聚水鱼虎步龙行... 家人们!今天小编来为大家解答欢聚水鱼虎步龙行透视挂怎么安装这个问题咨询软件客服徽9752949的挂在...
玩家分享攻略“新世界牛牛.到底... 有 亲,根据资深记者爆料新世界牛牛是可以开挂的,确实有挂(咨询软件无需打...
【第一消息】“新老夫子炸金花.... 家人们!今天小编来为大家解答新老夫子炸金花透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪...
【第一财经】“神殿娱乐.开挂器... 【第一财经】“神殿娱乐.开挂器?”透视曝光猫腻您好,神殿娱乐这个游戏其实有挂的,确实是有挂的,需要了...
今日重大发现“华龙棋牌.开挂器... 今日重大发现“华龙棋牌.开挂器?”必胜开挂神器您好,华龙棋牌这个游戏其实有挂的,确实是有挂的,需要了...
【第一消息】“上海敲麻.有没有... 网上科普关于“上海敲麻有没有挂”话题很是火热,小编也是针对上海敲麻作*弊开挂的方法以及开挂对应的知识...
【第一资讯】“旺旺冲击麻将.辅... 您好:旺旺冲击麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款...
今日重大发现“功夫熊猫炸金花.... 网上科普关于“功夫熊猫炸金花有没有挂”话题很是火热,小编也是针对功夫熊猫炸金花作*弊开挂的方法以及开...
高市早苗又放话了,警惕! 据日本《读卖新闻》24日报道,日本首相高市早苗23日在采访中谈到了“拥有核潜艇”的问题,被问及作为强...