该博客已经完全转移到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的基础上,可以实现对HBase数据库的数据操作,包括读取、写入和更新HBase表中的数据。 在使用MapReduce操作HBase时,可以通过Hadoop MapReduce框架提供的API与HBase数据库进行交互。这使得开发者可以在...
- **Map阶段**:在 MapReduce 任务中,Map 函数读取 HDFS 上的数据文件,将每条记录拆分成键值对,其中键可以是 HBase 表的行键和列族信息,值为对应的字段值。 - **Reduce阶段**:Reduce 函数接收来自 Map 的键值...
首先,为了在Spark中读取HBase数据,我们需要借助`TableInputFormat`。`TableInputFormat`是HBase提供的一个输入格式类,它可以将HBase表的数据转换为Hadoop MapReduce可以处理的键值对。在Java中,我们需要通过`...
- **动态控制**:用户可以通过选择合适的数据模式来控制数据的位置相关性,例如,通过将具有相似特征的数据放置在同一区域来优化读取操作。 #### 客户端API Bigtable提供了简洁的客户端API,允许开发者轻松地与...
在数据分析阶段,可以读取HBase中的数据进行复杂计算,然后将结果写回HBase或其他存储系统。这种结合使得HBase能够支持大规模的数据处理,同时也保留了其强大的实时查询能力。 在"**HBase MapReduce完整实例.zip**...
通过HBase的TableInputFormat和TableOutputFormat,MapReduce作业可以直接读取和写入HBase表。Map阶段可以对表中的行或列族进行操作,Reduce阶段则负责数据的汇总和整合。 四、Eclipse工程实践 本实例中提供的...
MapReduce是一种分布式计算模型,由Google提出,用于处理和生成大规模数据集。它将复杂的分布式系统操作抽象成简单的编程模型,使开发人员能够专注于编写Map和Reduce函数,从而实现大规模数据处理。 MapReduce的...
在本文中,我们将深入探讨如何使用通用MapReduce程序来复制HBase表数据。MapReduce是一种分布式计算模型,常用于处理大规模数据集,而HBase是一个分布式、列式存储的NoSQL数据库,适合处理大规模结构化数据。通过...
1. 实验描述:通过MapReduce批量将HBase表数据导入到HDFS,学习如何使用MapReduce连接和读取HBase数据表。 2. 主要步骤: - 修改主机名 - 启动Hadoop集群 - 启动Zookeeper集群 - 启动HBase集群 - 使用HBase ...
同时,为了提高性能,你还可以考虑使用HBase的Scan操作或Hadoop MapReduce进行批量处理。 记住,为了保证程序的稳定性和效率,你需要对HBase和HDFS的配置进行适当的优化,比如设置合理的缓存大小、批处理大小等。...
MapReduce在处理HBase数据时,可以实现特定列族、列限定符的投影,即只读取需要的数据,降低数据传输量,提高处理效率。 1. **HBase MapReduce API**:HBase提供了专门的MapReduce接口,使得开发者可以直接在HBase...
4. **HBase与MapReduce结合**:讲解如何配置和编写MapReduce作业来读取和写入HBase数据,包括HBaseInputFormat和HBaseOutputFormat的使用。 5. **实例演示**:可能会提供一个完整的示例,展示如何从HBase中读取数据...
Google三大论文分别指的是《Google File System》、《MapReduce: Simplified Data Processing on Large Clusters》和《Bigtable: A Distributed Storage System for Structured Data》。这三篇论文详细介绍了Google...
commons-configuration2-2.3.jar是Apache Commons Configuration库,用于处理配置文件,它简化了从各种来源(如XML、属性文件)读取和管理配置参数的过程。 woodstox-core-5.0.3.jar是Woodstox XML处理器,是一个...
这个示例,"MR_HBase-Hadoop中的MapReduce使用示例,输入(DBInputFormat),输出(DBOutputFormat)",主要展示了如何利用MapReduce与HBase进行交互,进行数据的读取和写入。下面将详细介绍相关的知识点。 1. **...
MapReduce为HBase提供了强大的计算能力,通过MapReduce可以在HBase上执行复杂的批处理任务,处理大规模数据集。 6. **HBase中的分布式存储单元** HRegion是HBase中分布式存储和负载均衡的基本单元。每个Region都...
这些文件是HBase可以直接读取的格式。 4. **HFile移动**:使用HBase的`importtsv`命令或自定义工具,将HDFS上的HFile移动到HBase的`-ROOT-`和`.META.`表的region服务器上,或者直接将HFile路径添加到HBase的表中。 ...
- **编写Mapper和Reducer**:接着,编写MapReduce作业,Mapper类负责从HBase中读取数据,Reducer类进行数据处理并可能将结果写回HBase。 - **设置HBaseInputFormat**:MapReduce作业需要使用`HBaseInputFormat`...
- MapReduce框架可以直接读取HBase中的数据进行处理,提高大数据分析的效率。 - **具体实现**: - **HDFS**: 作为底层存储层,提供数据的分布式存储能力。 - **MapReduce**: 可以直接处理HBase中的数据,支持复杂...