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

mapreduce读取hbase

阅读更多

该博客已经完全转移到http://sunhs.me

 

中并增加更多新的技术内容(hadoop为

 

主),欢迎访问!


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.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.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;


/**
 * 从HBase数据库中读数据
 * @author asheng
 * 读取时要设置好族名和列名(row34)
 * 输出结果在:"/home/asheng/Hbase/out/"下
 */
public class ReadDataFromHBase {
/**
 * 使用TableMapper说明是从hbase中读取数据,那么无需设置TableMapper的输入类型,只需设置其输出类型即可TableMapper<Text,Text>
 * 但是在map方法中要使用相应的类型map(ImmutableBytesWritable row, Result value, Context context) 
 */
public static class THMapper extends TableMapper<Text,Text> 
 {
private Text text = new Text();
public void map(ImmutableBytesWritable row, Result value, Context context) 
 {
String row_ = new String(row.get());
String val = new String(value.getValue(Bytes.toBytes("f1"), Bytes.toBytes("qualifier")));
 text.set(val);     
 System.out.println("key:" + row_ + "," + "value:" + text);
 try {
        context.write( new Text(row_),text);    
} 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,"Hbase-to-Txt");
        job.setJarByClass(ReadDataFromHBase.class);
        
        Path out = new Path("/home/asheng/Hbase/out/");
        
        job.setOutputFormatClass(TextOutputFormat.class);
        FileOutputFormat.setOutputPath(job, out);
        
        job.setMapperClass(THMapper.class);
        
        Scan scan = new Scan();
        scan.setCaching(500);        
        scan.setCacheBlocks(false);  
        
        TableMapReduceUtil.initTableMapperJob("tab", scan, THMapper.class, Text.class, Text.class, job);
        job.waitForCompletion(true);
        return 0;
    }
}
public static void main(String [] args) throws Exception{
        int mr;
        mr = ToolRunner.run(new Configuration(),new THDriver(),args);
        System.exit(mr);
    }
}

 

分享到:
评论

相关推荐

    MapReduce on Hbase

    在MapReduce的基础上,可以实现对HBase数据库的数据操作,包括读取、写入和更新HBase表中的数据。 在使用MapReduce操作HBase时,可以通过Hadoop MapReduce框架提供的API与HBase数据库进行交互。这使得开发者可以在...

    HDFS 通过mapreduce 进行 HBase 导入导出

    - **Map阶段**:在 MapReduce 任务中,Map 函数读取 HDFS 上的数据文件,将每条记录拆分成键值对,其中键可以是 HBase 表的行键和列族信息,值为对应的字段值。 - **Reduce阶段**:Reduce 函数接收来自 Map 的键值...

    spark使用java读取hbase数据做分布式计算.pdf

    首先,为了在Spark中读取HBase数据,我们需要借助`TableInputFormat`。`TableInputFormat`是HBase提供的一个输入格式类,它可以将HBase表的数据转换为Hadoop MapReduce可以处理的键值对。在Java中,我们需要通过`...

    google mapreduce bigtable hbase 论文中文版

    - **动态控制**:用户可以通过选择合适的数据模式来控制数据的位置相关性,例如,通过将具有相似特征的数据放置在同一区域来优化读取操作。 #### 客户端API Bigtable提供了简洁的客户端API,允许开发者轻松地与...

    HBase MapReduce完整实例.rar

    在数据分析阶段,可以读取HBase中的数据进行复杂计算,然后将结果写回HBase或其他存储系统。这种结合使得HBase能够支持大规模的数据处理,同时也保留了其强大的实时查询能力。 在"**HBase MapReduce完整实例.zip**...

    HBase MapReduce完整实例

    通过HBase的TableInputFormat和TableOutputFormat,MapReduce作业可以直接读取和写入HBase表。Map阶段可以对表中的行或列族进行操作,Reduce阶段则负责数据的汇总和整合。 四、Eclipse工程实践 本实例中提供的...

    Mapreduce实验报告.doc

    MapReduce是一种分布式计算模型,由Google提出,用于处理和生成大规模数据集。它将复杂的分布式系统操作抽象成简单的编程模型,使开发人员能够专注于编写Map和Reduce函数,从而实现大规模数据处理。 MapReduce的...

    通用MapReduce程序复制HBase表数据

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

    2018211582-实验二1

    1. 实验描述:通过MapReduce批量将HBase表数据导入到HDFS,学习如何使用MapReduce连接和读取HBase数据表。 2. 主要步骤: - 修改主机名 - 启动Hadoop集群 - 启动Zookeeper集群 - 启动HBase集群 - 使用HBase ...

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

    同时,为了提高性能,你还可以考虑使用HBase的Scan操作或Hadoop MapReduce进行批量处理。 记住,为了保证程序的稳定性和效率,你需要对HBase和HDFS的配置进行适当的优化,比如设置合理的缓存大小、批处理大小等。...

    Hbase:HBase MapReduce投影

    MapReduce在处理HBase数据时,可以实现特定列族、列限定符的投影,即只读取需要的数据,降低数据传输量,提高处理效率。 1. **HBase MapReduce API**:HBase提供了专门的MapReduce接口,使得开发者可以直接在HBase...

    WordCount,HBase MR样例代码

    4. **HBase与MapReduce结合**:讲解如何配置和编写MapReduce作业来读取和写入HBase数据,包括HBaseInputFormat和HBaseOutputFormat的使用。 5. **实例演示**:可能会提供一个完整的示例,展示如何从HBase中读取数据...

    google三大论文 gfs bigtable mapreduce hadoop hdfs hbase的原型

    Google三大论文分别指的是《Google File System》、《MapReduce: Simplified Data Processing on Large Clusters》和《Bigtable: A Distributed Storage System for Structured Data》。这三篇论文详细介绍了Google...

    hbase jar包.zip

    commons-configuration2-2.3.jar是Apache Commons Configuration库,用于处理配置文件,它简化了从各种来源(如XML、属性文件)读取和管理配置参数的过程。 woodstox-core-5.0.3.jar是Woodstox XML处理器,是一个...

    hadoop中Map-Reduce使用示例,输入(DBInputFormat),输出(DBOu-MR_HBase.zip

    这个示例,"MR_HBase-Hadoop中的MapReduce使用示例,输入(DBInputFormat),输出(DBOutputFormat)",主要展示了如何利用MapReduce与HBase进行交互,进行数据的读取和写入。下面将详细介绍相关的知识点。 1. **...

    大数据HBASE考题材料

    MapReduce为HBase提供了强大的计算能力,通过MapReduce可以在HBase上执行复杂的批处理任务,处理大规模数据集。 6. **HBase中的分布式存储单元** HRegion是HBase中分布式存储和负载均衡的基本单元。每个Region都...

    MR程序Bulkload数据到hbase

    这些文件是HBase可以直接读取的格式。 4. **HFile移动**:使用HBase的`importtsv`命令或自定义工具,将HDFS上的HFile移动到HBase的`-ROOT-`和`.META.`表的region服务器上,或者直接将HFile路径添加到HBase的表中。 ...

    hadoop和hbase集成所需jar包

    - **编写Mapper和Reducer**:接着,编写MapReduce作业,Mapper类负责从HBase中读取数据,Reducer类进行数据处理并可能将结果写回HBase。 - **设置HBaseInputFormat**:MapReduce作业需要使用`HBaseInputFormat`...

    HBASE编程指南word版

    - MapReduce框架可以直接读取HBase中的数据进行处理,提高大数据分析的效率。 - **具体实现**: - **HDFS**: 作为底层存储层,提供数据的分布式存储能力。 - **MapReduce**: 可以直接处理HBase中的数据,支持复杂...

Global site tag (gtag.js) - Google Analytics