MapReduce生成HFile文件、加载HFile到HBase
1、程序代码
public class TransformHFile extends Configured implements Tool{ public static final String COLUMN_FAMILY = "info"; public static final String[] COLUMNS = new String[]{"rowkey","name","deptname","leader","joindate","sal","exp","deptno"}; //7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30 static class TransFormMapper extends Mapper<LongWritable, Text, ImmutableBytesWritable, Put>{ ImmutableBytesWritable outkey = new ImmutableBytesWritable(); @Override protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, ImmutableBytesWritable, Put>.Context context) throws IOException, InterruptedException { String line = value.toString(); //TODO validate data // .... String[] fields = new String[8]; StringTokenizer token = new StringTokenizer(line); int i = 0; while (token.hasMoreTokens()){ fields[i++] = token.nextToken(); } outkey.set(Bytes.toBytes(fields[0])); Put put = new Put(Bytes.toBytes(fields[0])); for(int index=1;index<8 ;index++){ if(StringUtils.isNotEmpty(fields[index])) put.add(Bytes.toBytes(COLUMN_FAMILY),Bytes.toBytes(COLUMNS[index]), Bytes.toBytes(fields[index])); } context.write(outkey,put); } } public int run(String[] args) throws Exception { Job job = Job.getInstance(this.getConf(), this.getClass().getSimpleName()); job.setJarByClass(this.getClass()); job.setMapperClass(TransFormMapper.class); job.setMapOutputKeyClass(ImmutableBytesWritable.class); job.setMapOutputValueClass(Put.class); FileInputFormat.addInputPath(job, new Path(args[1])); FileOutputFormat.setOutputPath(job, new Path(args[2])); HFileOutputFormat2.configureIncrementalLoad(job, new HTable(getConf(),args[0])); int exitcode = job.waitForCompletion(true) ? 0 : 1; return exitcode; } public static void main(String[] args) throws Exception{ /*args = new String[]{ "emp2", "hdfs://hadoop-ehp.hyman.com:8020/user/ehp/hbase/importtsv/emp/input2", "hdfs://hadoop-ehp.hyman.com:8020/user/ehp/hbase/importtsv/emp/mapredHFile" };*/ Configuration conf = HBaseConfiguration.create(); int exitcode = ToolRunner.run(// conf, // new TransformHFile(), // args// ); System.exit(exitcode); } }
2.打包运行
HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase mapredcp`:${HBASE_HOME}/conf \ yarn jar $HADOOP_HOME/jars/mapred.jar \ com.hyman.ehp.mapred.hbase.TransformHFile \ emp \ /user/ehp/hbase/importtsv/emp/input \ /user/ehp/hbase/importtsv/emp/mapredHFile \
3.加载HFile到HBase中
HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase mapredcp`:${HBASE_HOME}/conf \ ${HBASE_HOME}/bin/hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles \ /user/ehp/hbase/importtsv/emp/mapredHFile \ emp
相关推荐
MapReduce生成HFile入库到HBase 可能需要的jar包,一共有3个 可以直接放在每台机器的${HADOOP_HOME}/lib下 hadoopHadoop 1.1.2 + hbase 0.94.6.1
在Java编程环境中,将本地文件读取并上传到HBase是一项常见的任务,特别是在大数据处理和存储的场景下。HBase是一个分布式、版本化的NoSQL数据库,基于Apache Hadoop,适用于大规模数据存储。以下是一个详细的过程,...
HFile 是 Hbase 的存储文件格式,预先生成 HFile 后,可以将其直接加载到 Hbase 中。这是一种高效的入库方式,尤其是在大规模数据集的情况下。预先生成 HFile 入库的优点是快捷、可靠,缺点是需要提前生成 HFile,...
【标题】:“Hadoop MR(MapReduce)将文件转换为HFile并导入到HBase” 在大数据处理领域,Hadoop MapReduce是一种广泛使用的分布式计算框架,而HBase是基于Hadoop的数据存储系统,用于处理大规模的非结构化数据。...
标题中的“MR程序Bulkload数据到hbase”指的是使用MapReduce(MR)程序批量加载(Bulkload)数据到HBase数据库的过程。MapReduce是Apache Hadoop框架中的一个关键组件,用于处理和生成大规模数据集。而HBase是一个...
HBase集群通常会与Hadoop集群设置在同一个集群中,这意味着HBase使用的分布式文件系统(HDFS)就是生成HFile文件的MapReduce任务所在的同一集群。这样设置的好处是减少了数据迁移过程中的网络传输,并且可以利用...
本篇文章将详细探讨如何使用MapReduce作业从文本文件批量加载数据到HBase。 首先,理解HBaseBulkLoad的基本原理。批量加载的过程通常包括预处理数据、将数据转换为HFile格式以及最后将HFile上传到HBase表的HDFS目录...
这个格式会将输出结果先写入HDFS上的HFile,然后通过HBase的bulk load功能加载到表中,以提高写入效率。 5. **Java编程**:由于HBase MapReduce主要基于Java实现,所以开发过程中需要掌握Java编程。此外,理解HBase...
- **Bulk Load机制**:批量加载能避免多次的小规模写入,显著提高导入效率,因为它利用HBase的RegionServer直接将数据加载到HBase表,减少了网络传输和MapReduce作业的开销。 - **Hadoop MapReduce**:虽然HBase...
5. **加载HFile到HBase**:通过`org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles`工具,将生成的HFile加载到指定的HBase表中。这个过程是原子的,即使在加载过程中出现错误,也不会影响已存在的数据。 6....
本主题将详细讲解如何将HDFS(Hadoop Distributed File System)上的文件导入到HBase中,并以在Cloudera SCM的CDH 4.8.1产品环境中的源代码实现为例进行阐述。 首先,理解HDFS和HBase的基本原理至关重要。HDFS是...
5. **执行MapReduce作业**:编写一个MapReduce作业,该作业使用HFileOutputFormat作为输出格式,将上一步骤中写入HDFS的数据转化为HBase可读的HFile格式。 6. **加载HFiles**:最后,通过HBase的Admin API或者HBase...
3、运行MapReduce程序生成HFile hadoop -jar BigGeoDataHbaseLoader.jar class路径 -Dhbase.zookeeper.quorum=zookeeper集群地址 输入空间数据tsv文件路径 输出HFile路径 空间数据表名 4、将HFile添加到HBase表中 ...
总结起来,使用Java API进行HBase的Bulk Load涉及MapReduce作业的配置、HFile的生成和加载等多个步骤。`mirrorm5y`工具类是对这个过程的抽象和封装,目的是简化开发流程,提高代码的可读性和可维护性。对于处理大量...
最后,使用LoadIncrementalHFiles工具将Hfile批量加载到Hbase表中,完成数据导入: ``` hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles \ /user/xxxx/hfile \ xxxx:dataload2 ``` 3. Hbase的...
4. **Java API使用**:在Java中,我们可以使用`org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles`工具类来加载HFiles到HBase。首先,需要创建一个TableOutputFormat实例,接着通过TableRecordWriter写入...
3. **HBase的Compaction**:Compaction是HBase中用于合并HFile的过程,目的是减少Region内的文件数量,提高读取效率。有两种类型的Compaction:Minor和Major,前者只合并同一Region的小文件,后者会合并所有文件,...
### Apache HBase™ 参考指南关键知识点解析 #### 一、引言 Apache HBase 是一个分布式...通过阅读这份指南,用户不仅可以深入了解HBase的工作原理,还能学习到如何有效利用HBase来解决大规模数据存储和处理的问题。
3.1. 从HBase 0.20.x or 0.89.x 升级到 HBase 0.90.x 3.2. 从 0.90.x 到 0.92.x 4. The HBase Shell 4.1. 使用脚本 4.2. Shell 技巧 5. 数据模型 5.1. 概念视图 5.2. 物理视图 5.3. 表 5.4. 行 5.5. 列族 5.6. Cells...
HBase的数据在物理存储上采用HFile格式,这是一种优化的二进制文件格式,适用于随机读取和批量写入操作。HFile将数据按行键排序,提供高效的查找性能,并支持数据压缩,从而节省存储空间。 除了基本功能,HBase还与...