`

MapReduce生成HFile文件、加载HFile到HBase

 
阅读更多

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包

    MapReduce生成HFile入库到HBase 可能需要的jar包,一共有3个 可以直接放在每台机器的${HADOOP_HOME}/lib下 hadoopHadoop 1.1.2 + hbase 0.94.6.1

    java从本地读文件并上传Hbase

    在Java编程环境中,将本地文件读取并上传到HBase是一项常见的任务,特别是在大数据处理和存储的场景下。HBase是一个分布式、版本化的NoSQL数据库,基于Apache Hadoop,适用于大规模数据存储。以下是一个详细的过程,...

    Hbase几种入库方式

    HFile 是 Hbase 的存储文件格式,预先生成 HFile 后,可以将其直接加载到 Hbase 中。这是一种高效的入库方式,尤其是在大规模数据集的情况下。预先生成 HFile 入库的优点是快捷、可靠,缺点是需要提前生成 HFile,...

    hadoop mr file2hfile2hbase

    【标题】:“Hadoop MR(MapReduce)将文件转换为HFile并导入到HBase” 在大数据处理领域,Hadoop MapReduce是一种广泛使用的分布式计算框架,而HBase是基于Hadoop的数据存储系统,用于处理大规模的非结构化数据。...

    MR程序Bulkload数据到hbase

    标题中的“MR程序Bulkload数据到hbase”指的是使用MapReduce(MR)程序批量加载(Bulkload)数据到HBase数据库的过程。MapReduce是Apache Hadoop框架中的一个关键组件,用于处理和生成大规模数据集。而HBase是一个...

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

    HBase集群通常会与Hadoop集群设置在同一个集群中,这意味着HBase使用的分布式文件系统(HDFS)就是生成HFile文件的MapReduce任务所在的同一集群。这样设置的好处是减少了数据迁移过程中的网络传输,并且可以利用...

    HBaseBulkLoad:使用 MapReduce 作业从文本文件加载 HBase

    本篇文章将详细探讨如何使用MapReduce作业从文本文件批量加载数据到HBase。 首先,理解HBaseBulkLoad的基本原理。批量加载的过程通常包括预处理数据、将数据转换为HFile格式以及最后将HFile上传到HBase表的HDFS目录...

    Hbase:HBase MapReduce投影

    这个格式会将输出结果先写入HDFS上的HFile,然后通过HBase的bulk load功能加载到表中,以提高写入效率。 5. **Java编程**:由于HBase MapReduce主要基于Java实现,所以开发过程中需要掌握Java编程。此外,理解HBase...

    hbase+批量上传jar包

    - **Bulk Load机制**:批量加载能避免多次的小规模写入,显著提高导入效率,因为它利用HBase的RegionServer直接将数据加载到HBase表,减少了网络传输和MapReduce作业的开销。 - **Hadoop MapReduce**:虽然HBase...

    How-to: Use HBase Bulk Loading, and Why

    5. **加载HFile到HBase**:通过`org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles`工具,将生成的HFile加载到指定的HBase表中。这个过程是原子的,即使在加载过程中出现错误,也不会影响已存在的数据。 6....

    将hdfs上的文件导入hbase的源代码

    本主题将详细讲解如何将HDFS(Hadoop Distributed File System)上的文件导入到HBase中,并以在Cloudera SCM的CDH 4.8.1产品环境中的源代码实现为例进行阐述。 首先,理解HDFS和HBase的基本原理至关重要。HDFS是...

    java解决hive快速导数据到Hbase代码

    5. **执行MapReduce作业**:编写一个MapReduce作业,该作业使用HFileOutputFormat作为输出格式,将上一步骤中写入HDFS的数据转化为HBase可读的HFile格式。 6. **加载HFiles**:最后,通过HBase的Admin API或者HBase...

    BigGeoDataHBaseLoader:HBase矢量大数据快速入库工具

    3、运行MapReduce程序生成HFile hadoop -jar BigGeoDataHbaseLoader.jar class路径 -Dhbase.zookeeper.quorum=zookeeper集群地址 输入空间数据tsv文件路径 输出HFile路径 空间数据表名 4、将HFile添加到HBase表中 ...

    jobs_hbase_mirrorm5y_BulkLoadjava_

    总结起来,使用Java API进行HBase的Bulk Load涉及MapReduce作业的配置、HFile的生成和加载等多个步骤。`mirrorm5y`工具类是对这个过程的抽象和封装,目的是简化开发流程,提高代码的可读性和可维护性。对于处理大量...

    聊聊Hbase存储优化那些事(下).pdf

    最后,使用LoadIncrementalHFiles工具将Hfile批量加载到Hbase表中,完成数据导入: ``` hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles \ /user/xxxx/hfile \ xxxx:dataload2 ``` 3. Hbase的...

    hfile-to-hbase:处女发表

    4. **Java API使用**:在Java中,我们可以使用`org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles`工具类来加载HFiles到HBase。首先,需要创建一个TableOutputFormat实例,接着通过TableRecordWriter写入...

    hbase1.0.3_part2

    3. **HBase的Compaction**:Compaction是HBase中用于合并HFile的过程,目的是减少Region内的文件数量,提高读取效率。有两种类型的Compaction:Minor和Major,前者只合并同一Region的小文件,后者会合并所有文件,...

    Apache HBase ™ Reference Guide

    ### Apache HBase™ 参考指南关键知识点解析 #### 一、引言 Apache HBase 是一个分布式...通过阅读这份指南,用户不仅可以深入了解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...

    大数据云计算技术系列 Hadoop之Hbase从入门到精通(共243页).pdf

    HBase的数据在物理存储上采用HFile格式,这是一种优化的二进制文件格式,适用于随机读取和批量写入操作。HFile将数据按行键排序,提供高效的查找性能,并支持数据压缩,从而节省存储空间。 除了基本功能,HBase还与...

Global site tag (gtag.js) - Google Analytics