2019独角兽企业重金招聘Python工程师标准>>>

HBase MapReduce实例分析

  跟Hadoop的无缝集成使得使用MapReduce对HBase的数据进行分布式计算非常方便,本文将介绍HBase下 MapReduce开发要点。很好理解本文前提是你对Hadoop MapReduce有一定的了解,如果你是初次接触Hadoop MapReduce编程,可以参考 "第一个MapReduce应用" 这篇文章来建立基本概念。

一、Java代码

package hbase;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.mapreduce.TableOutputFormat;
import org.apache.hadoop.hbase.mapreduce.TableReducer;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
public class WordCountHBase {public static class Map extendsMapper<LongWritable, Text, Text, IntWritable> {private IntWritable i = new IntWritable(1);public void map(LongWritable key, Text value, Context context)throws IOException, InterruptedException {String s[] = value.toString().trim().split(" ");// 将输入的每行以空格分开for (String m : s) {context.write(new Text(m), i);}}}public static class Reduce extendsTableReducer<Text, IntWritable, NullWritable> {public void reduce(Text key, Iterable<IntWritable> values,Context context) throws IOException, InterruptedException {int sum = 0;for (IntWritable i : values) {sum += i.get();}Put put = new Put(Bytes.toBytes(key.toString()));// Put实例化,每一个词存一行put.add(Bytes.toBytes("content"), Bytes.toBytes("count"),Bytes.toBytes(String.valueOf(sum)));// 列族为content,列为count,列值为数目context.write(NullWritable.get(), put);}}public static void createHBaseTable(String tableName) throws IOException {HTableDescriptor htd = new HTableDescriptor(tableName);HColumnDescriptor col = new HColumnDescriptor("content");htd.addFamily(col);Configuration conf = HBaseConfiguration.create();conf.set("hbase.zookeeper.quorum", "libin2");HBaseAdmin admin = new HBaseAdmin(conf);if (admin.tableExists(tableName)) {System.out.println("table exists, trying to recreate table......");admin.disableTable(tableName);admin.deleteTable(tableName);}System.out.println("create new table:" + tableName);admin.createTable(htd);}public static void main(String[] args) throws IOException,InterruptedException, ClassNotFoundException {String tableName = "WordCount";Configuration conf = new Configuration();conf.set(TableOutputFormat.OUTPUT_TABLE, tableName);createHBaseTable(tableName);String input = args[0];Job job = new Job(conf, "WordCount table with " + input);job.setJarByClass(WordCountHBase.class);job.setNumReduceTasks(3);job.setMapperClass(Map.class);job.setReducerClass(Reduce.class);job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWritable.class);job.setInputFormatClass(TextInputFormat.class);job.setOutputFormatClass(TableOutputFormat.class);FileInputFormat.addInputPath(job, new Path(input));System.exit(job.waitForCompletion(true) ? 0 : 1);}
}

二、把java代码打成jar包

如果同时用到了两个jar包,需要在两个jar包之间加一个":"分隔符。

三、运行程序

运行WordCountHBase.jar可能会报错:java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HTableDescriptor

解决方法(把hbase的核心jar包和hbase自带的Zookeeperjar包拷贝到hadoop的安装目录\lib下,然后重启服务):

然后再次执行

四、查看HBase表中的数据

如果表中有保存好的MapReduce处理后的数据,说明成功!本文通过实例分析演示了使用MapReduce分析HBase的数据,需要注意的这只是一种常规的方式(分析表中的数据存到另外的表中),实际上不局限于此,不过其他方式跟此类似。

转载于:https://my.oschina.net/u/1269935/blog/358235

HBase MapReduce实例分析相关推荐

  1. hbase开发环境搭建及运行hbase小实例(HBase 0.98.3新api)

    问题导读: 1.如何搭建hbase开发环境? 2.HTableDescriptor初始化产生了那些变化? 3.eclipse如何连接hbase集群? hbase开发环境搭建与hadoop开发环境搭建差 ...

  2. hbase coprocessor的分析

    转自 http://walkoven.com/?p=77 hbase coprocessor的分析 下载链接:hbase coprocessor的分析.pdf hbase Coprocessor是很多 ...

  3. HBase源码分析之HRegion上compact流程分析(三)

    在<HBase源码分析之HRegion上compact流程分析(二)>一文中,我们没有讲解真正执行合并的CompactionContext的compact()方法.现在我们来分析下它的具体 ...

  4. gpgpu-sim卡分配程序设计实例分析

    gpgpu-sim卡分配程序设计实例分析 运行代码地址:https://github.com/gpgpu-sim/gpgpu-sim_distribution 一.概述 此文件包含有关安装.生成和运行 ...

  5. python多功能电子钟_python gui - PyQt4 精彩实例分析之电子钟

    PyQt4 精彩实例分析之电子钟,当然在写实例之前要先安装PyQt4模块.from PyQt4.QtGui import * from PyQt4.QtCore import * import sys ...

  6. RPC-原理及RPC实例分析

    还有就是:RPC支持的BIO,NIO的理解 (1)BIO: Blocking IO;同步阻塞: (2)NIO:Non-Blocking IO, 同步非阻塞; 参考:IO多路复用,同步,异步,阻塞和非阻 ...

  7. python asyncio教程_python中使用asyncio实现异步IO实例分析

    1.说明 Python实现异步IO非常简单,asyncio是Python 3.4版本引入的标准库,直接内置了对异步IO的支持. asyncio的编程模型就是一个消息循环.我们从asyncio模块中直接 ...

  8. 马歇尔·赫伯特:人工智能的前沿技术与实例分析

    来源:中国人工智能学会 2017年12月11日,国际知名机器人专家.美国卡耐基梅隆大学机器人研究所所长马歇尔·赫伯特(Martial Hebert)教授和首席科学家大卫·伯恩(David Bourne ...

  9. Hadoop之mapreduce 实例三

    Hadoop之mapreduce 实例三 转载于:https://www.cnblogs.com/chaoren399/archive/2013/01/04/2844503.html

  10. python怎么处理数据_python中scrapy处理项目数据的实例分析

    在我们处理完数据后,习惯把它放在原有的位置,但是这样也会出现一定的隐患.如果因为新数据的加入或者其他种种原因,当我们再次想要启用这个文件的时候,小伙伴们就会开始着急却怎么也翻不出来,似乎也没有其他更好 ...

最新文章

  1. 通过Keepalived实现Redis Failover自动故障切换功能[实践分享] =转载
  2. Elasticsearch2.x Cluster Health
  3. 高斯-赛得尔迭代式 c++_高斯混合模型(Gaussian Mixture Model)与EM算法原理(一)
  4. ubuntu160.4+anaconda3 +tensorflow1.140 +keras2.2.5安装
  5. 【Linux】ubuntu系统VMware Tools(文件共享、全屏...)3步完成安装过程亲测可用
  6. window系统无限试用 JAVA IDEA不限版本
  7. c++中声明和定义的区别(这个兄弟写的解决了我的疑惑)
  8. 【动态规划】公共子串
  9. 为什么选择SpringBoot?
  10. angularJS+requireJS实现controller及directive的按需加载
  11. 笔记本鼠标乱跑!不知何故!
  12. python中数字和字符串可以直接相加_用c语言或者python将文件中特定字符串后面的数字相加...
  13. hadoop day 6
  14. MOS管及MOS管的驱动电路设计
  15. java package 目录_修改jar包package目录结构操作方法
  16. 系统架构师成长之路(三)
  17. nodejs总结之redis模块
  18. 我是如何一步步解决问题 让Spring MVC返回HTML类型的视图
  19. Spss 的基本方法使用步骤
  20. APP性能测试之功耗测试

热门文章

  1. Java连接各种数据库
  2. windows 2003 上Lotus Notes 客户端无法运行的解决办法
  3. ASV2011中文版本和英文版本的区别
  4. linux 下 pip 安装教程6,在CentOS下安装pip
  5. Linux设备驱动模型-Device
  6. 事物(二)之客户端事务应答匹配
  7. qcom camera smmu 学习(3)
  8. 追加文件内容的三种方法
  9. obd协议 混动车_最新人工智能驾考系统OBD信号采集模块
  10. 易语言皮肤模块200个_S7200 SMART 模拟量模块种类amp;选型须知