这个操作和普通的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

Mapreduce操作HBase的更多相关文章

  1. HBase 相关API操练(三):MapReduce操作HBase

    MapReduce 操作 HBase 在 HBase 系统上运行批处理运算,最方便和实用的模型依然是 MapReduce,如下图所示. HBase Table 和 Region 的关系类似 HDFS ...

  2. 7.MapReduce操作Hbase

    7 HBase的MapReduce   HBase中Table和Region的关系,有些类似HDFS中File和Block的关系.由于HBase提供了配套的与MapReduce进行交互的API如 Ta ...

  3. Hbase理论&&hbase shell&&python操作hbase&&python通过mapreduce操作hbase

    一.Hbase搭建: 二.理论知识介绍: 1Hbase介绍: Hbase是分布式.面向列的开源数据库(其实准确的说是面向列族).HDFS为Hbase提供可靠的底层数据存储服务,MapReduce为Hb ...

  4. Hbase第五章 MapReduce操作HBase

    容易遇到的坑: 当用mapReducer操作HBase时,运行jar包的过程中如果遇到 java.lang.NoClassDefFoundError 类似的错误时,一般是由于hadoop环境没有hba ...

  5. HBase学习之路 (五)MapReduce操作Hbase

    MapReduce从HDFS读取数据存储到HBase中 现有HDFS中有一个student.txt文件,格式如下 95002,刘晨,女,19,IS 95017,王风娟,女,18,IS 95018,王一 ...

  6. MapReduce操作Hbase --table2file

    官方手册:http://hbase.apache.org/book.html#mapreduce.example 简单的操作,将hbase表中的数据写入到文件中. RunJob 源码: import ...

  7. hadoop2的mapreduce操作hbase数据

    1.从hbase中取数据,再把计算结果插入hbase中 package com.yeliang; import java.io.IOException; import org.apache.hadoo ...

  8. 大数据入门第十四天——Hbase详解(三)hbase基本原理与MR操作Hbase

    一.基本原理 1.hbase的位置 上图描述了Hadoop 2.0生态系统中的各层结构.其中HBase位于结构化存储层,HDFS为HBase提供了高可靠性的底层存储支持, MapReduce为HBas ...

  9. Hbase框架原理及相关的知识点理解、Hbase访问MapReduce、Hbase访问Java API、Hbase shell及Hbase性能优化总结

    转自:http://blog.csdn.net/zhongwen7710/article/details/39577431 本blog的内容包含: 第一部分:Hbase框架原理理解 第二部分:Hbas ...

随机推荐

  1. 企业BGP网络规划案例(三)

    路由选路 1.分支的办公流和生产流默认走联通MSTP线路,DC流默认走电信MSTP线路,当其中某条互联的链路down后才会进行流量切换 XRV1配置 ========================= ...

  2. mysql查询时间段内的数据

    https://blog.csdn.net/ls1645/article/details/79118464

  3. centos7 安装mysql5.7.20(yum方式)

    windows下安装mysql请访问:windows下mysql5.7.20安装(zip包方式) 一.安装过程 1.安装wget yum install wget 2.查找yum源名称 在mysql官 ...

  4. java去除数组重复元素的方法

    转载自:https://blog.csdn.net/Solar24/article/details/78672500 import java.util.ArrayList; import java.u ...

  5. github 生成配置ssh 秘钥方法详解

    如果安装github成功后,当从本地提交文件到github的时候,提交不成功,报错,可能问题就是你还没有生成ssh秘钥 1.当你提交文件到github,不成功,出现如下的情况,就代表着github上面 ...

  6. python数据库进阶

    第1节 MySQL基础 一,说明 1,认识MySQL与创建用户 MySQL是最流行的关系型数据库管理系统之一,由瑞典MySQL AB公司开发,目前属于Oracle公司.MySQL是一种关联数据管理系统 ...

  7. vim 中文乱码怎么解决

    一般来说只需要正确设置vim的编码识别序列就很少会遇到乱码问题: set fileencodings=ucs-bom,utf-8,utf-16,gbk,big5,gb18030,latin1 这个设置 ...

  8. 教程:使用cPanel管理域名和数据库

    cPanel是一个基于web的基于web的控制面板,它简化了许多常见的系统管理任务,如网站创建.数据库部署和管理等.本指南向您展示了如何使用cPanel用户帐户管理域和数据库.所有这些指令都与位于端口 ...

  9. SELinux入门简介

    操作系统有两类访问控制:自主访问控制(DAC)和强制访问控制(MAC).标准Linux安全是一种DAC,SELinux为Linux增加了一个灵活的和可配置的的MAC. 进程启动时所拥有的权限就是运行此 ...

  10. 自己搭建git服务器

    1.安装git 2.创建git用户,给权限(git目录下) 3.设置公钥 4.初始化git仓库 5.给权限(仓库) 连接到本地