通过mapreduce向Hbase写数据

【HBase基础教程】6、HBase之读取MapReduce数据写入HBase 本blog将介绍利用MapReduce操作HBase,借助最熟悉的单词计数案例WordCount,将WordCount的统计结果存储到HBase,而不是HDFS。开发环境 硬件环境:Centos 6.5 服务器4台(一台为Master节点,三台为Slave节点) 软件环境:Java 1.7.0_45、Eclipse Juno Service Release 2、hadoop-1.2.1、hbase- 阅读详情

1.

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.mapred.TableMapReduceUtil;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.JobClient;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapred.MapReduceBase;
import org.apache.hadoop.mapred.Mapper;
import org.apache.hadoop.mapred.OutputCollector;
import org.apache.hadoop.mapred.Reporter;
import org.apache.hadoop.mapred.FileInputFormat;
import org.apache.hadoop.mapred.lib.NullOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;


public class LoadToHBase extends Configured implements Tool{
    public static class XMap extends MapReduceBase implements Mapper{
        private JobConf conf;
        
        @Override
        public void configure(JobConf conf){
            this.conf = conf;
            try{
                this.table = new HTable(new HBaseConfiguration(conf), "observations");
            }catch(IOException e){
                throw new RuntimeException("Failed HTable construction", e);
            }
        }
        
        @Override
        public void close() throws IOException{
            super.close();
            table.close();
        }
        
        private HTable table;
        public void map(LongWritable key, Text value, OutputCollector output, Reporter reporter) throws IOException{
            String[] valuelist = value.toString().split("\t"); 
            String uid = valuelist[0];
            byte[] rowKey = uid.getBytes();
            Put p = new Put(rowKey);
            p.add("content".getBytes(), "attr1".getBytes(), "testvalue".getBytes());
            table.put(p);
        }    
    }
   
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        int exitCode = ToolRunner.run(new HBaseConfiguration(), new LoadToHBase(), args);
        System.exit(exitCode);
    }

    @Override
    public int run(String[] args) throws Exception {
        // TODO Auto-generated method stub
        JobConf conf = new JobConf(getClass());
        TableMapReduceUtil.addDependencyJars(conf);
        FileInputFormat.addInputPath(conf, new Path(args[0]));
        conf.setJobName("LoadToHBase");
        conf.setJarByClass(XMap.class);
        conf.setMapperClass(XMap.class);
        conf.setNumReduceTasks(0);
        conf.setOutputFormat(NullOutputFormat.class);
        JobClient.runJob(conf);
        return 0;
    }

2. 新API

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.lib.output.NullOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;


import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase. mapreduce.TableMapReduceUtil;

// 通过新API载入HBASE数据
public class NewLoadToHBase {
      // Map内部类
      public static class Map extends Mapper{
           
            private Configuration conf = null;
            private HTable table = null;
             
            @Override
            protected void setup(Context context)throws IOException, InterruptedException{
                  super.setup(context);
                  conf = context.getConfiguration(); // 在map任务执行前将conf设置好
                  HBaseConfiguration. addHbaseResources(conf); // 重要!没有会出现 java.io.IOException: Unable to determine ZooKeeper ensemble
                  try{
                        this.table = new HTable(conf , "observations"); // 构建HBase中的表对象,向这个表中载入数据

                  }catch(IOException e){
                        throw new RuntimeException("Failed HTable construction", e);
                  }
            }
             
            // 在map任务执行结束时,释放相关资源
            @Override
            protected void cleanup(Context context) throws IOException, InterruptedException{
                  super.cleanup(context);
                  table.close();
            }
             
            // 以下是map方法,主要完成 数据的处理,并写入HBase
            public void map(LongWritable key, Text value, Context context) throws IOException{

                  String[] valuelist = value.toString().split("\t");  
                  String uid = valuelist[0];
                  byte[] rowKey = uid.getBytes();
                  Put p = new Put(rowKey);
                  p.add("content".getBytes(), "attr1".getBytes(), "testvalue".getBytes());
                  table.put(p);
            }
      }
       
      public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {
            Configuration conf = new Configuration();
            String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
            if(otherArgs.length != 1){
                  System.err.println("Usage: wordcount ");
                  System.exit(2);
            }
             
            Job job = new Job(conf, "NewLoadToHBase!");
            TableMapReduceUtil. addDependencyJars(job);
            job.setJarByClass( NewLoadToHBase.class);
            job.setMapperClass(Map.class);
            job.setNumReduceTasks(0);
            job.setInputFormatClass( TextInputFormat.class);
            job.setOutputFormatClass( NullOutputFormat.class);
            FileInputFormat.addInputPath( job, new Path(otherArgs[0]));
            System.exit(job. waitForCompletion(true) ? 0 : 1);
      }

}
参考: https://groups.google.com/forum/?fromgroups=#!topic/hadoopors/V_woQid4FYc


MapReduce On HBase 文章目录MapReduce On MapReduceHBase与MapReduce集成整合MapReduce On Hbase小案例1.准备数据2.编写MapReduce代码3.程序运行结果 MapReduce On MapReduce HBase与MapReduce集成整合 从HBase里读取数据 将HBase里的数据作为Map的输入 将数据写入HBase 将HBase作为Reduce... 阅读详情

相关推荐

HBase MapReduce数据操作

HBase MapReduce数据操作

日常分享数据分析开发、编程语言内容 1685

mapreduce向hbase写数据

用MR向hbase 写数据,在这里只用mapper不用hbase,避免mapper向reduce传输数据产生的IO网络流,从而提高效率。 第一步:编写代码,打jar包 package com.ww.hbase.mrimport; import java.io.IOException; import org.apache.hadoop.conf.Configu

u013887751的博客 596

网课、网页视频倍速播放简单脚本

一个简单的网页视频倍速脚本

huazn612的博客 1万+

HBase学习笔记(5)——MapReduce操作Hbase

1 实现方法 Hbase对MapReduce提供支持,它实现了TableMapper类和TableReducer类,我们只需要继承这两个类即可 1.1 写个mapper继承TableMapper<Text, IntWritable> 参数:Text:mapper的输出key类型; IntWritable:mapper的输出value类型。 map(ImmutableBytesWrit...

一角残叶的博客 3444

基于深度学习的UWB门禁检测

针对基于UWB技术智能门禁管理系统,由于测距误差或非视距原因导致门禁产生不合理动作的现象。分析如何采用基于深度学习的方法,通过对TWR测距数据、TWR监听数据、到达角度差(PDOA)、信道脉冲响应(CIR)等数据维度进行深度学习,利用 TensorFlow建立相应的推导模型,对卡片姿态进行更加精准可靠的检测,从而更好完成闸机开合控制。

tenth_quadrant的博客 2026

YOLOv8中Bottleneck模块详解

Bottleneck 模块在YOLOv8中的作用是进行特征提取和增强,是网络中的核心构建模块之一。它的主要功能是通过卷积操作来处理输入特征图,并在适当情况下应用残差连接,使得信息能够有效地通过网络层进行传播

zzzyyy8的博客 8059

五十三、通过MapReduce实现HBase操作

通过HBase的相关JavaAPI,我们可以实现伴随HBase操作的MapReduce过程,比如使用MapReduce将HBase表中的数据拷贝到另外一张表。本文我们通过两个案例来进行实操一下,关注专栏《破茧成蝶——大数据篇》,查看更多相关的内容~ 目录 一、将HBase表数据复制到另外一张表 1.1需求说明 1.2编码实现 1.3测试 二、将HDFS的数据写入到HBase中 2.1需求说明 2.2编码实现 2.3测试 一、将HBase表数据复制到另外一张表 1.1需求说...

象在舞的技术专栏 2981

从零到一:手把手教你用海康VisionMaster完成第一个字符识别项目(附完整流程与避坑点)

本文详细介绍了如何使用海康VisionMaster完成首个字符识别项目,涵盖从环境搭建、图像预处理到系统集成的完整流程。特别分享了Blob分析配置、字符识别优化等实战技巧,帮助开发者避开常见陷阱,快速掌握VisionMaster的基本操作,提升工业自动化场景下的字符识别效率。

weixin_29313423的博客 664

利用MapReduce将文件内容写入Hbase表

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bi...

xiushuiguande的博客 4617

GPS数据处理必备:IGS精密星历下载与使用全攻略(附武汉大学/CDDIS/CODE/GFZ地址)

本文为GPS/GNSS数据处理者提供了IGS精密星历的完整下载与使用指南。详细解析了最终、快速、超快速三种精密星历产品的区别与选择策略,并手把手教学如何从武汉大学、CDDIS、CODE、GFZ四大主流数据中心高效获取数据,涵盖文件命名规则解析及自动化下载脚本,助力科研与工程应用。

weixin_29234239的博客 677

关于 SAP Fiori Elements 开发项目里的本地 annotation.xml 文件

文件通过引用 SAP 提供的标准词汇表和本地 OData 服务的元数据,为 Fiori Elements 应用定义了一个基础的注解结构。开发者可以在此基础上添加具体的注解,以满足特定的业务需求和界面定制。文件用于定义本地注解,以补充或覆盖来自后端 OData 服务的元数据。元素内添加具体的注解,以定制 Fiori Elements 应用的界面和行为。的架构,用于在本地注解中定义实体、类型和注解。这使得在本地注解中可以引用该 OData 服务的实体和类型。等,用于控制界面元素的显示和行为。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 468

MapReduce编程之通过MapReduce读取数据,往Hbase中写数据

1,首先是map类: package com.hbase.maptohbase; import java.io.IOException; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text;

luyee2010的专栏 9137

新政下的绿电直连项目经济性分析:模式创新与价值重构

随着全球气候治理与低碳转型进程不断加速,绿电直连作为新能源就近消纳的创新模式,正成为破解新能源消纳瓶颈、规避碳关税壁垒的核心路径。2025年9月,国家发展改革委、国家能源局发布《关于完善价格机制促进新能源发电就近消纳的通知》(1192号文),为绿电直连项目的经济性分析与效益测算提供了明确的政策依据。本文将基于新政框架,深入解析绿电直连项目的经济性影响因素、盈利模式与优化路径,并结合案例与量化模型,为项目投资决策提供系统参考。

getusushu的博客 135

mapreduce向hbase中写数据

package com.sun.hbase; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configured; import org.apache.hadoop.fs.Path; import org.apa...

asheng1116的专栏 139

汽车标定技术(七)--英飞凌TC3xx_Overlay实现页切换

今天说要开个专栏讲讲XCP标定,但在将标定之前,先把英飞凌专门为标定功能设计overlay功能讲解清楚。

认真搞搞汽车MCU 4013

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Mapreduce读取Hbase表,写数据到一个Hbase表中

public class LabelJob { public static void main(String[] args) throws Exception { Job job = Job.getInstance(new Configuration()); job.setJarByClass(LabelJ...

weixin_30955617的博客 417

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

用mapreduce程序将hive写数据到hbase慢的解决办法

项目中可能会有将hive的数据同步到hbase的需求,但是有时mapreduce程序写数据会非常慢,也有可能会出现数据倾斜问题。这时就要对mapreduce程序进行优化了。        首先确定调大reduce个数,比如从5个调大到10个,如果还不能有效的加快速度。就需要在mapreduce程序中将hive中大量的空过滤掉,这部分特别耗资源,也会引起数据倾斜。这部分空到hbase中也没用,过滤

kingdom☞蓝调的博客 1602

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

mapreduce 只使用Mapper往多个hbase表中写数据

  只使用Mapper不使用reduce会大大减少mapreduce程序的运行时间。 有时候程序会往多张hbase表写数据。 所以有如题的需求。 下面给出的代码,不是可以运行的代码,只是展示driver中需要进行的必要项设置,mapper类需要实现的接口,map函数需要的参数以及函数内部的处理方式。 实现过程比较曲折,只贴代码: class Qos2HbaseDriver exte...

weixin_33887443的博客 271

学习笔记:从0开始学习大数据-9. MapReduce读并写Hbase数据

上节的MapReduce计算WordCount例子是从hdfs读输入文件,计算结果也写入hdfs MapReduce分布式计算的输入输出可以根据需要从hdfs或hbase读取或写入,如 A.读hdfs-->写hdfs B.读hdfs-->写hbase C.读hbase-->写hdfs D.读hbase -->写hbase 本节示例第三种和第四种情况。 一、第四...

LinBSoft的专栏 398

Java大数据学习17--Hbase操作MapReduce

一、实现方法 Hbase对MapReduce提供支持,它实现了TableMapper类和TableReducer类,我们只需要继承这两个类即可。 1、写个mapper继承TableMapper<Text, IntWritable> 参数:Text:mapper的输出key类型; IntWritable:mapper的输出value类型。 其中的map方法如下: m...

stalin_的博客 800

99 MapReduce操作Hbase

1.实现方法 Hbase对MapReduce提供支持,它实现了TableMapper类和TableReducer类,我们只需要继承这两个类即可。 1、写个mapper继承TableMapper<Text, IntWritable> 参数:Text:mapper的输出key类型; IntWritable:mapper的输出value类型。 其中的map方法如下: map(Immutabl...

阿甘兄 484

hbase 编写mapreduce

packagecom.hbase.test; importjava.io.IOException; importorg.apache.hadoop.conf.Configuration; importorg.a...

congtuo7221的博客 176

大数据之HBase MapReduce的实例分

跟Hadoop的无缝集成使得使用MapReduce对HBase的数据进行分布式计算非常方便,本文将以前面的blog示例,介绍HBase下MapReduce开发要点。很好理解本文前提是你对Hadoop MapReduce有一定的了解。 HBase MapReduce核心类介绍 首先一起来回顾...

chuanmao9486的博客 206

【Hbase】Hbase TableInputFormat、TableOutputFormat

TableInputFormat是Apache HBase中的一个重要的类,它允许MapReduce作业直接从HBase表中读取数据作为其输入。这使得HBase可以作为一个数据源,供MapReduce作业处理其存储的大规模数据集,而无需将数据导出到HDFS或其他文件系统。这样不仅提高了数据处理的效率,还减少了数据传输的延迟和潜在的错误。TableInputFormat的作用TableInputFormat的主要作用是将HBase表中的数据转换成适合MapReduce作业处理的形式。

九师兄 1630

MapReduce处理HBase中的数据

MapReduce 中如何处理HBase中的数据?如何读取HBase数据给Map?如何将结果存储到HBase中? MapReduce 中如何处理HBase中的数据?如何读取HBase数据给Map?如何将结果存储到HBase中? Mapper类:包括一个内部类(Context)和四个方法(setup,map,cleanup,run);           setup,cle

芒果先生Mango的专栏 1485
上一篇: Hbase几种数据入库方式比较
下一篇: hadoop的eclipse插件编译
nuoline
博客等级 码龄18年 345粉丝 247原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值