zoukankan      html  css  js  c++  java
  • Mapreduce操作HBase

    这个操作和普通的Mapreduce还不太一样,比如普通的Mapreduce输入可以是txt文件等,Mapreduce可以直接读取Hive中的表的数据(能够看见是以类似txt文件形式),但Mapreduce操作Hbase却和前二者不一样

    它有专门的Mapper 这个叫TableMapper,这个Mapper继承自Mapper,普通的Mapper有4个输入泛型,但这里的TableMapper却只有两个,通过源码可以看到TableMapper的KEYIN,VALUEIN分别设置为ImmutableBytesWriteable和Result类型(这个Result类型就是Hbase查询的结果数据)所以只需要实现KEYOUT、VALUEOUT即可

    这里的TableMapper类完全是为了从HBase中读取数据而设置的,也就是说,这个TableMapper是专为HBase定义的抽象类。

    实例参考:

    1.https://www.cnblogs.com/liangzh/archive/2012/04/19/2457703.html

    2. MapReduce从Hbase中读取多个表:

     List<Scan> scans = new ArrayList<Scan>();//hbase多表输入
            /*Scan scan1 = new Scan();
            scan1.setAttribute(Scan.SCAN_ATTRIBUTES_TABLE_NAME, Bytes.toBytes("r_data_curr2019030101"));
            scans.add(scan1);
            Scan scan2 = new Scan();
            scan2.setAttribute(Scan.SCAN_ATTRIBUTES_TABLE_NAME, Bytes.toBytes("r_data_curr2019030102"));
            scans.add(scan2);*/
            for(int i =3;i<=23;i++){
                Scan scan = new Scan();
                if(i<=9){
                    scan.setAttribute(Scan.SCAN_ATTRIBUTES_TABLE_NAME, Bytes.toBytes("r_data_curr201903010"+i));
                }else{
                    scan.setAttribute(Scan.SCAN_ATTRIBUTES_TABLE_NAME, Bytes.toBytes("r_data_curr20190301"+i));
                }
                scans.add(scan);
            }
            TableMapReduceUtil.initTableMapperJob(scans, HourDataMapper.class, Text.class, Text.class, job,
                    false);
    
            // 设置reducer相关,reducer往hbase输出
            // 本地环境,而且fs.defaultFS为集群模式的时候,需呀设置addDependencyJars参数为false。
            TableMapReduceUtil.initTableReducerJob("r_his_data_hour", HourDataReducer.class, job, null, null, null, null, false);

     3.Mapreduce计算环比差值或同比差值

    https://www.cnblogs.com/sharpxiajun/p/5205496.html

    4. Hbase MapReduce 多表输入,输出到多表,输入的表指定开始遍历的起始和结束行

    https://blog.csdn.net/u014034934/article/details/74003049

  • 相关阅读:
    前端开发笔记(2)css基础(上)
    前端开发笔记(1)html基础
    <Android 基础(三 十)> Fragment (3) ~ PreferenceFragment
    MyEclipse中搭建Struts2开发环境
    Android 投射工具和录屏工具
    似是而非的k=sqrt(n)
    算法:求比指定数大且最小的“不重复数”问题的高效实现
    巧用“异或”
    12个滑稽的C语言面试问答——《12个有趣的C语言问答》评析(5)
    12个滑稽的C语言面试问答——《12个有趣的C语言问答》评析(4)
  • 原文地址:https://www.cnblogs.com/zhangshitong/p/10300946.html
Copyright © 2011-2022 走看看