如何利用mapreduce访问hbase数据

package com.mr.test;  

import java.io.IOException;
import java.util.Iterator;  

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.KeyValue;
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.util.Bytes;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.MapReduceBase;
import org.apache.hadoop.mapred.OutputCollector;
import org.apache.hadoop.mapred.Reducer;
import org.apache.hadoop.mapred.Reporter;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.log4j.Logger;  

public class MRHbase {
    private static Logger log = Logger.getLogger(MRHbase.class);
    public static String family = "charactor";
    public static String col = "hobby";  

    public static class HMap extends TableMapper<Text, Text> {
        @Override
        protected void map(ImmutableBytesWritable key, Result value,
                Context context) throws IOException, InterruptedException {
//          KeyValue kv = value.getColumnLatest(family.getBytes(),
//                  col.getBytes());
//          context.write(new Text(Bytes.toString(kv.getKey())),
//                  new Text(Bytes.toString(kv.getValue())));
            byte[] v = value.getValue(family.getBytes(), col.getBytes());
            byte[] r = value.getRow();
            context.write(new Text(Bytes.toString(v)), new Text(Bytes.toString(r)));
        }
    }  

    public static class Reduce extends MapReduceBase implements
            Reducer<Text, Text, Text, Text> {
        public void reduce(Text key, Iterator<Text> values,
                OutputCollector<Text, Text> output, Reporter reporter)
                throws IOException {
            while (values.hasNext()) {
                output.collect(key, values.next());
            }
        }
    }  

    public static void main(String[] args) {
        Configuration conf = HBaseConfiguration.create();
        try {
            Job job = new Job(conf, "hbase test");
            job.setJarByClass(MRHbase.class);
            Scan scan = new Scan();
            scan.addColumn(family.getBytes(), col.getBytes());
            TableMapReduceUtil.initTableMapperJob("person", scan, HMap.class,
                    Text.class, Text.class, job);
            job.setOutputFormatClass(TextOutputFormat.class);
            FileOutputFormat.setOutputPath(job, new Path(args[0]));
            job.waitForCompletion(true);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  

    }
}

注:要把zookeeper添加到hadoop/lib目录下,master&slaves

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/extra/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索hbase
, hadoop
, class
, mapreduce
, apache
, java hbase
, import
, hadoop mapreduce
, hadoop mapreduce
, hadoop job
hadoop hbase
mapreduce 访问hbase、访问hbase数据库、mapreduce hbase、hbase mapreduce 例子、mapreduce写入hbase,以便于您获取更多的相关知识。

时间: 2024-09-01 14:54:29

如何利用mapreduce访问hbase数据的相关文章

spark利用newAPIHadoopRDD读取hbase数据不完整的问题

问题描述 参照org.apache.spark.examples包中的HBaseTest编写一个读取HBase表中数据转换为RDD的程序.目标表中数据量为2494068条,但是使用newAPIHadoopRDD读进来的RDD.count后的结果为1440966.是何原因,为什么读入的数据集不完整?代码如下:importorg.apache.hadoop.hbase.client.HBaseAdminimportorg.apache.hadoop.hbase.{HBaseConfiguration

如何利用mapreduce批量读写hbase数据

package com.mr.test; import java.io.IOException; import java.util.Iterator; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.KeyValue; imp

HBase数据访问的一些常用方式

类型 特点 场合 优缺点分析 Native Java API 最常规和高效的访问方式 适合MapReduce作业并行批处理HBase表数据     Hbase Shell HBase的命令行工具,最简单的访问方式 适合HBase管理使用   Thrift GateWay 利用Thrift序列化技术,支持c++,PHP,Python等多种语言 适合其他异构系统在线访问HBase表数据     REST Gateway 解除了语言限制 支持REST风格的Http API访问Hbase   Pig 使

ASP.NET中利用SQLXML WEB服务访问XML数据

asp.net|sql|web|web服务|xml|访问|数据      引言 使用SQLXML 的Web 服务从你的ASP.net应用程序中直接访问XML 数据       SQLXML 是扩展SQL 服务器现有的对检索和储存XML 数据的支持的一套附加的工具. 有了SQLXML 3.0,你现在就能使用SQL服务器展示Web 服务了.在SQLXML的Web 服务可以让用户执行存储过程,用户定义的功能,并且它们支持模板.       在这篇文章中,你将看出怎样展示一个作为Web 服务并构建一个简

如何使用Big SQL访问大数据使用详解

在大数据技术推广.使用过程中,一个很大的挑战就是如何使用目前企业用户广泛使用的标准 SQL 来访问基于 Hadoop 平台的大数据,使用企业原有应用来访问大数据. 现在,使用大数据技术,通常使用 Hive.Pig 及 Java 程序来访问大数据,只能支持标准 SQL 的子集,需要用户学习新的编程语言,改写企业原有的应用,为了解决上述问题,IBM 推出了 Big SQL,它使用标准的 SQL 来访问基于 Hadoop 平台的 InfoSphere BigInsights,并提供标准的 JDBC.O

使用CopyTable同步HBase数据

CopyTable是Hbase提供的一个数据同步工具,可以用于同步表的部分或全部数据.本文介绍如何使用CopyTable同步HBase数据.针对没有hadoop集群的用户,还介绍了单机运行CopyTable的配置和参数.根据我们的测试,在表不压缩的情况下,单机版CopyTable可以达到1小时100G左右的导入速度.10T以下的数据都可以使用CopyTable导入数据. 准备工作 1 安装HBaseCopyTable依赖于hadoop mapreduce.如果源HBase集群中开启了mapred

怎样在初创公司里搭建稳定、可访问的数据基础架构

数据是创立Asana的核心部分,并且每一个团队都依赖他们自己的方式.我们的负责增长的团队依靠事件数据来分析试验结果(对比试验). 我们做很多快速的实验--通常会有很多实验一起跑-- 让这些互相影响的作用和其他关键度量引导我们需要放弃什么和投入什么 项目经理,设计师和产品工程师通过分析使用数据来发现不可避免的妥协,比如简洁性对强大性. 通过这种方法,我们可以知道什么样的新产品方向能够释放出最多的潜力.市场部门需要明确在他们的竞争力中的哪个部分能够驱使新用户到Asana.财会部门需要非常可靠的关于总

HBase数据同步到ElasticSearch的方案

ElasticSearch的River机制 ElasticSearch自身提供了一个River机制,用于同步数据. 这里可以找到官方目前推荐的River: http://www.elasticsearch.org/guide/en/elasticsearch/rivers/current/ 但是官方没有提供HBase的River. 其实ES的River非常简单,就是一个用户打包好的jar包,ES负责找到一个node,并启动这个River.如果node失效了,会自动找另外一个node来启动这个Ri

Android利用Fiddler进行网络数据抓包

主要介绍Android及IPhone手机上如何利用Fiddler进行网络数据抓包,比如我们想抓某个应用(微博.微信.墨迹天气)的网络通信请求就可以利用这个方法. Mac 下请使用 Charles 代替 Fiddler. 相对于tcpdump配合wireshark抓包的优势在于:(1)无需root (2)对Android和Iphone同样适用 (3)操作更简单方便(第一次安装配置,第二次只需设置代理即可) (4)数据包的查看更清晰易懂,Fiddler的UI更简单明了 (5) 可以查看https请求