`
sunasheng
  • 浏览: 122833 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;
import org.apache.hadoop.hbase.mapreduce.TableReducer;
import org.apache.hadoop.io.LongWritable;
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;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
/**
 * 通过mapreduce向hbase写数据
 * 
 * @author asheng
 * 直接运行,"/home/asheng/Hbase/in/"下文本文件,格式为:
1 name1
2 name2
3 name3
4 name4
5 name5
 *运行结果:
 *
 ROW     COLUMN+CELL                                                                                                                    
 1    column=f1:qualifier, timestamp=1373940859569, value=name1                                        
 2    column=f1:qualifier, timestamp=1373940859569, value=name2                                              
 3    column=f1:qualifier, timestamp=1373940859569, value=name3                                         
 4    column=f1:qualifier, timestamp=1373940859569, value=name4                                      
 5    column=f1:qualifier, timestamp=1373940859569, value=name5
 */
public class WriteDataToHBase {
public static class THMapper extends Mapper<LongWritable, Text, Text, Text> 
 {
public void map(LongWritable key, Text value, Context context) 
 {
String[] items = value.toString().split(" ");
String k = items[0];
String v = items[1];
System.out.println("key:" + k + "," + "value:" + v);
try {
context.write(new Text(k), new Text(v));
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
/**
 * ImmutableBytesWritable
 * 
 * Put
 */
public static class THReducer extends TableReducer<Text,Text,ImmutableBytesWritable>{
    public void reduce(Text key,Iterable<Text> value,Context context){
        String k = key.toString();
        String v = value.iterator().next().toString(); //由数据知道value就只有一行
        Put putrow = new Put(k.getBytes());
        putrow.add("f1".getBytes(), "qualifier".getBytes(), v.getBytes());
        //TODO 列族:列名
        //此处设置列族和列名分别为f1  qualifier  以及value的值v.getBytes()
        try {
                context.write(new ImmutableBytesWritable(key.getBytes()), putrow);
        } catch (IOException e) {
                e.printStackTrace();
        } catch (InterruptedException e) {
                e.printStackTrace();
        }
    }
}
public static class THDriver extends Configured implements Tool{
    @Override
    public int run(String[] arg0) throws Exception 
     {
        Configuration conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum.", "localhost");  
        
        Job job = new Job(conf,"Txt-to-Hbase");
        job.setJarByClass(WriteDataToHBase.class);
        
        Path in = new Path("/home/asheng/Hbase/in/");
        
        job.setInputFormatClass(TextInputFormat.class);
        FileInputFormat.addInputPath(job, in);
        
        job.setMapperClass(THMapper.class);
        job.setReducerClass(THReducer.class);
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(Text.class);
        
        TableMapReduceUtil.initTableReducerJob("tab", THReducer.class, job);
        
       job.waitForCompletion(true);
       return 0;
    }
}
public static void main(String [] args) throws Exception
 {
        int mr = ToolRunner.run(new Configuration(),new THDriver(),args);
        System.exit(mr);
  }
}
 

 

分享到:
评论

相关推荐

    基于MapReduce和HBase的海量网络数据处理.pdf

    数据解析部分使用MapReduce来对二进制数据进行解析,并将解析后的数据存储在HBase中。数据存储部分使用HBase来存储解析后的文本数据,并提供了一个基于PHP的数据查询界面。 系统的优点是可以实现对海量网络数据的...

    MapReduce on Hbase

    开发者可以利用这些类和方法,将MapReduce作业和HBase数据表进行映射。例如,可以利用HBase提供的过滤器,仅对满足特定条件的数据行进行处理,从而优化作业的性能。 使用HBase和MapReduce时,典型的工作流程可能...

    HDFS 通过mapreduce 进行 HBase 导入导出

    标题 "HDFS 通过 mapreduce 进行 HBase 导入导出" 涉及的是大数据处理领域中的两个重要组件——Hadoop Distributed File System (HDFS) 和 HBase,以及它们之间的数据交互。HDFS 是 Hadoop 的分布式文件系统,而 ...

    mapreduce方式入库hbase hive hdfs

    mapreduce方式入库hbase hive hdfs,速度很快,里面详细讲述了代码的编写过程,值得下载

    结合MapReduce和HBase的遥感图像并行分布式查询.pdf

    总结来说,结合MapReduce和HBase的遥感图像并行分布式查询技术,通过分布式计算和存储优化,有效地解决了海量遥感图像数据的高效处理和检索问题,为地球观测数据的管理和应用提供了新的解决方案。这一方法对于分布式...

    详解Hadoop核心架构HDFS+MapReduce+Hbase+Hive

    通过对Hadoop分布式计算平台最核心的分布式文件系统HDFS、MapReduce处理过程,以及数据仓库工具Hive和分布式数据库Hbase的介绍,基本涵盖了Hadoop分布式平台的所有技术核心。通过这一阶段的调研总结,从内部机理的...

    HBase MapReduce完整实例.rar

    通过这个实例,学习者可以深入了解HBase与MapReduce的整合过程,掌握如何利用MapReduce进行HBase数据的批处理,以及如何设计和优化MapReduce任务以提高处理效率。这对于大数据开发人员来说,是一份非常有价值的参考...

    MapReduce导出hbase数据工具BillFeeImport.jar

    hbase导入hbase导入

    java操作Hbase之从Hbase中读取数据写入hdfs中源码

    接下来,我们要将读取到的HBase数据写入HDFS。Hadoop提供了`FileSystem`类来操作HDFS,我们可以使用`FSDataOutputStream`来写入文件。以下是一个简单的示例: ```java import org.apache.hadoop.conf.Configuration...

    HBase MapReduce完整实例

    在HBase中,MapReduce主要用于批量导入/导出数据、查询优化以及复杂的分析任务。通过HBase的TableInputFormat和TableOutputFormat,MapReduce作业可以直接读取和写入HBase表。Map阶段可以对表中的行或列族进行操作,...

    hbase导入话单数据mapreduce函数实现执行过程实例(博客附件)

    标题中的“hbase导入话单数据mapreduce函数实现执行过程实例”揭示了本文将探讨如何使用MapReduce在HBase中导入大数据,特别是话单记录。HBase是一个分布式、版本化的NoSQL数据库,常用于处理大规模的数据。...

    MapReduce输出至hbase共16页.pdf.zip

    MapReduce与HBase,两者都是大数据处理的重要组成部分,它们在大数据领域中各自扮演着关键角色。MapReduce作为分布式计算框架,擅长处理大规模数据的批处理任务;而HBase则是一个基于Hadoop的分布式数据库,提供高...

    Hadoop数据迁移--从Hadoop向HBase载入数据

    在Hadoop数据迁移过程中,从Hadoop向HBase载入数据是常见的操作。 数据迁移主要分为两个步骤: 第一步骤:将Hadoop中普通文本格式的数据转化为HFile文件。HFile是HBase中的存储格式文件,它可以被HBase识别和读取...

    hbase和hadoop数据块损坏处理

    * hbase org.apache.hadoop.hbase.mapreduce.Import &lt;outputdir&gt; &lt;tablename&gt;:将 HDFS 文件插入到 HBase 表中 * snapshot 'test', 'snap_test':创建名为 snap_test 的快照 * hbase org.apache.hadoop.hbase....

    hbase备份和数据恢复

    - HDFS数据恢复:在Region Server故障时,可以从备份的HDFS数据中恢复。 二、HBase与Hive的互导 1. Hive到HBase:利用Hive的外部表功能,将Hive表的数据导出到HBase。这通常通过定义一个HBase的Hive表,并使用...

    基于Python+SpringBoot+Vue+HDFS+MapReduce+HBase+Hive+Kafka+Sp.zip

    标题中的“基于Python+SpringBoot+Vue+HDFS+MapReduce+HBase+Hive+Kafka+Spark”提到了一系列技术,它们都是大数据处理、分布式系统和Web开发的重要组件。接下来,我们将深入探讨这些技术及其在实际项目中的应用。 ...

    通用MapReduce程序复制HBase表数据

    在本文中,我们将深入探讨如何使用通用MapReduce程序来复制HBase表数据。MapReduce是一种分布式计算模型,常用于处理大规模数据集,而HBase是一个分布式、列式存储的NoSQL数据库,适合处理大规模结构化数据。通过...

    Hadoop数据迁移--从Hadoop向HBase

    具体到从Hadoop向HBase的数据迁移中,Map任务会读取HDFS中的文件,使用自定义的Mapper类对每一行数据进行解析,提取出关键信息,如行键(row key)、列族(column family)、列限定符(column qualifier)和值...

Global site tag (gtag.js) - Google Analytics