`
小网客
  • 浏览: 1244278 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MapReduce一个Mapper读Hbase表并且写Hbase方案

 
阅读更多

场景:

      在MapReduce操作Hbase的时候有时候不需要reduce,只需要用Mapper的时候读A表,处理完之后写B表,也就是A表为输入表,B表为输出表。需求就是 A中的有一列E:E,把‘E:E’中为数字的数据保存到B表中。

表说明:

     create A,'E'

     create B,'E'

方案一:直接在mapper中打开B表,如果不是数字,那么直接Put进去,这个比较简单优缺点就不说了

方案二:TableMapReduceUtil.initTableMapperJob把A表作为输入,同时设置outputValueClass为Put,然后设置OutputTable即可,不需要reduce

实现:

Job:

private static void runJob() {
	String outputTableName = "B";
	String inputTableName = "A";
	Configuration conf = HBaseConfiguration.create();
	conf.set("hbase.master", XXX);
	conf.set("hbase.zookeeper.quorum", XXX);
	conf.set("hbase.cluster.distributed", "true");
	conf.set(TableOutputFormat.OUTPUT_TABLE, outputTableName);
	try {
		Scan scan = new Scan();
		Job job = new Job(conf, "DataFormat Task");

		job.setJarByClass(DataFormatTask.class);
		TableMapReduceUtil.initTableMapperJob(inputTableName, scan,
				DataFormatMapper.class, NullWritable.class, Put.class, job);

		job.setOutputFormatClass(TableOutputFormat.class);
		job.setNumReduceTasks(0);
		job.waitForCompletion(true);

	} catch (Throwable e) {
		throw new RuntimeException("Run DataFormatTask error! ", e);
	} finally {
		HConnectionManager.deleteConnection(conf, true);
	}

}

 

Main:

public static void main(String[] args) {
	runJob();
}

 DataFormatMapper:

protected void map(ImmutableBytesWritable key, Result value,
	Context context) throws IOException,
	InterruptedException {
	LOGGER.info("key:" + Bytes.toString(key.get()));
	LOGGER.info("row:" + Bytes.toString(value.getRow()));
	String val = Bytes.toString(value.getValue(Bytes.toBytes("E"), Bytes.toBytes("E")));
	if (!NumberUtils.isDigits(val)) {
		return;
	}
	Put put = new Put(key.get());
	put.add(Bytes.toBytes("E"), Bytes.toBytes("E"), Bytes.toBytes(val));
	context.write(NullWritable.get(), put);
}

 

 

0
0
分享到:
评论

相关推荐

    hadoop和hbase集成所需jar包

    Hadoop提供了强大的数据处理能力,而HBase则是一个基于Hadoop的分布式列式数据库,适合处理大规模的半结构化数据。为了将这两个系统集成,以便在MapReduce任务中使用HBase,我们需要特定的JAR包来建立连接和通信。...

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

    MapReduce是Apache Hadoop框架中的一个核心组件,用于处理和生成大数据集。它通过将大规模数据集分片到分布式计算节点上进行并行处理,然后汇总结果,实现了对海量数据的有效计算。而HBase是基于Hadoop的数据存储...

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

    HBase是一个分布式、版本化的NoSQL数据库,常用于处理大规模的数据。MapReduce是Apache Hadoop项目的核心组件,用于并行处理和计算大型数据集。 在大数据领域,Hive通常被用作数据仓库工具,它提供了SQL-like的语言...

    morphlines.confmorphline-hbase-mapper.xml

    4. **运行MapReduce作业**:使用这个配置启动一个MapReduce作业,该作业遍历HBase表的所有行,对每行应用Morphlines配置,然后将结果写入Solr。 5. **监控和维护**:一旦索引建立完成,需要监控Solr的性能和HBase-...

    MR程序Bulkload数据到hbase

    MapReduce是Apache Hadoop框架中的一个关键组件,用于处理和生成大规模数据集。而HBase是一个分布式的、支持列族的NoSQL数据库,适合实时读写操作。 在大数据领域,当需要将大量数据导入到HBase时,直接通过客户端...

    Hbase:HBase MapReduce投影

    3. **MapReduce过程**:在Map阶段,HBase数据被分割成多个split,每个split对应一个Mapper任务。Mapper接收行键和列值,可以进行初步的计算和过滤。Reduce阶段则根据需求聚合Mapper的输出,例如求和、计数等。 4. *...

    通用MapReduce程序复制HBase表数据

    本文将深入探讨如何编写一个通用的MapReduce程序,实现HBase表之间的数据复制,并提供对版本数、列导入与导出设置的灵活性。 首先,我们要理解HBase的数据模型。HBase是一个行式存储的NoSQL数据库,数据以Key-Value...

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

    HBase是一个基于Hadoop的分布式数据库,它主要用于随机实时读/写访问超大表,适用于存储半结构化或非结构化稀疏数据。在Hadoop数据迁移过程中,从Hadoop向HBase载入数据是常见的操作。 数据迁移主要分为两个步骤: ...

    WordCount,HBase MR样例代码

    “HBase MR样例代码”则指的是使用Hadoop的MapReduce框架来操作HBase,HBase是一个基于Google的Bigtable论文设计的开源NoSQL数据库,运行在Hadoop之上。HBase提供高吞吐量的数据读写能力,适合存储非结构化和半结构...

    Hadoop数据迁移--从Hadoop向HBase

    在示例代码中,`createTab`函数展示了如何创建一个包含多个列族的HBase表。列族是HBase表的基本组织单位,可以理解为关系型数据库中的列集合。通过`addFamily`方法,可以为HBase表添加不同的列族,如示例中的“f1”...

    2018211582-实验二1

    在这个过程中,MapReduce的Mapper负责读取HBase表中的数据,并将其转换成键值对,而Reducer则接收Mapper的输出,进行进一步处理。在写入数据时,Mapper将处理后的数据转换成HBase的Put对象,然后Reducer将这些Put...

    HBase与hive整合 和 hive与hdfs结合的效率对比1

    具体来说,Hive的查询会被转化为MapReduce任务,其中HiveHBaseTableInputFormat负责将HBase表切分为多个Mapper任务,每个Mapper对应HBase的一个Region。HBase表数据的读取是通过Scanner实现的,如果存在过滤条件,...

    hbase的java client实例

    在分布式大数据存储领域,HBase是一个非常重要的列式数据库,尤其在处理海量实时数据时表现卓越。本主题将深入探讨如何使用Java客户端API与HBase进行交互,包括集成Spring、MapReduce实例以及协处理器的使用。 首先...

    Hadoop+HBase+Java API

    然后,开发者可以创建一个MapReduce作业,定义Mapper和Reducer类,使用`FileInputFormat`和`FileOutputFormat`指定输入和输出格式。在Mapper中,数据被转换并发送到Reducer,Reducer则对数据进行聚合或转换。对于...

    hbase+批量上传jar包

    在大数据处理领域,HBase作为一个分布式、高性能的列式存储系统,被广泛应用于实时数据存储。在实际操作中,我们经常需要对HBase进行批量数据导入,这时就会用到批量上传jar包的方法。本文将详细讲解如何利用HBase...

    hbase_常用配置参数_以及学习笔记讲解_以及各种原理图.zip

    HBase,全称为Hierarchical Database,是Apache基金会的一个开源NoSQL数据库,主要设计用于处理海量半结构化数据的大数据存储。HBase构建于Hadoop之上,利用HDFS提供高容错性和可扩展性,适用于实时读写操作。在这个...

    浅谈Hive vs. HBase

    Apache HBase 是一个分布式的、面向列的 NoSQL 数据库系统,运行在 HDFS 之上。它提供了类似于 SQL 的数据操作能力,但与传统的关系型数据库不同,HBase 更适合存储海量数据,并支持随机读写操作。 **2.2 特点** - ...

    phoenix_wordcount.tar.gz_Hadoop Phoenix_mapReduce_phoenix wordc

    首先,创建一个表来存储单词及其出现次数,然后运行MapReduce作业,该作业将遍历HBase表,统计每个单词的数量。Map阶段依然负责单词的提取,但由于数据源是HBase,所以Mapper需要连接到Phoenix,执行SQL查询以获取...

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

    2. **DBInputFormat**: 这是一个特殊的输入格式,允许MapReduce作业从关系型数据库(如MySQL,PostgreSQL等)或者NoSQL数据库(如HBase)中读取数据。`DBInputFormat`提供了一种方式,使得开发者可以轻松地从数据库...

Global site tag (gtag.js) - Google Analytics