博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mapreduce读写Hbase
阅读量:6313 次
发布时间:2019-06-22

本文共 2528 字,大约阅读时间需要 8 分钟。

hot3.png

一、Main方法代码大放送

    

public static void main(String[] args)  throws IOException {        Configuration conf = HBaseConfiguration.create();        //可以设置一些参数,比如元数据的一些东西        //conf.set("path", inputPath);        Job job = Job.getInstance(conf ,"mapreduce read data from bhase test.");        job.setJarByClass(MyMapper.class);        //全表扫描Hbase全库数据,这样并非不好,但是压力会大        Scan scan = new Scan();        //加上startKey与stopkey读取某个数据类型的数据        //Scan scan = new Scan(Bytes.toBytes("195861"),Bytes.toBytes("195861" + "1"));        //也可以读取某个分区的数据        //Scan scan = new Scan(Bytes.toBytes("195861-123456"),Bytes.toBytes("195861-654321"));        //需要扫描的列簇,如果不加将会扫描Hbase的所有列簇,这需要根据需求来确定        scan.addFamily(Bytes.toBytes("info"));        //只需要info列簇下的name列        scan.addColumn(Bytes.toBytes("info"), Bytes.toBytes("name"));        //设置输出任务的输出路径        FileOutputFormat.setOutputPath(job, new Path("/tmp/test" + new Random().nextInt(10000)));        //这个是初始化读取Hbase的方法        TableMapReduceUtil.initTableMapperJob("user"(表名), scan, MyMapper.class, NullWritable.class(设置Map任务的输出Key), Text.class(设置Map任务的输出value), job);        //设置reduce的数量 根据需求来定 有些情况是不需要的        job.setNumReduceTasks(0);                //提交任务到集群        job.waitForCompletion(true);          }

二、Map任务代码大放送

public static class MyMapper extends TableMapper
 {        public HTableInterface user = null;        public MyMapper() {        }        @Override        protected void setup(Context context) throws IOException, InterruptedException {            user = new HTable(context.getConfiguration(), "user");            /**FileSystem fs = FileSystem.get(context.getConfiguration());            BufferedReader reader = new BufferedReader(new InputStreamReader(fs.open(new Path(context.getConfiguration().get("fileInput")))));            String line = null;            while ((line = reader.readLine()) != null) {                String userUrn = "195861-" + line;                userUrnList.add(userUrn);            }            reader.close();            */                    }        @Override        protected void map(ImmutableBytesWritable key, Result result, Context context) throws IOException, InterruptedException {            //TODO做一些事情 Put Delete?            ...........................................        }        @Override        protected void cleanup(Context context) throws IOException, InterruptedException {            user .flushCommits();            user .close();        }    }

转载于:https://my.oschina.net/momisabuilder/blog/533433

你可能感兴趣的文章
IE8调用window.open导出EXCEL文件题目
查看>>
python之 列表常用方法
查看>>
vue-cli脚手架的搭建
查看>>
在网页中加入百度搜索框实例代码
查看>>
在Flex中动态设置icon属性
查看>>
采集音频和摄像头视频并实时H264编码及AAC编码
查看>>
3星|《三联生活周刊》2017年39期:英国皇家助产士学会于2017年5月悄悄修改了政策,不再鼓励孕妇自然分娩了...
查看>>
高级Linux工程师常用软件清单
查看>>
堆排序算法
查看>>
folders.cgi占用系统大量资源
查看>>
路由器ospf动态路由配置
查看>>
zabbix监控安装与配置
查看>>
python 异常
查看>>
last_insert_id()获取mysql最后一条记录ID
查看>>
可执行程序找不到lib库地址的处理方法
查看>>
bash数组
查看>>
Richard M. Stallman 给《自由开源软件本地化》写的前言
查看>>
oracle数据库密码过期报错
查看>>
zip
查看>>
How to recover from root.sh on 11.2 Grid Infrastructure Failed
查看>>