`

Mapreduce导入数据到HBase中

 
阅读更多
MapReuce导入数据文件到HBASE表中

1. 代码编写

 

/**
 * 参考 org.apache.hadoop.hbase.mapreduce.ImportTsv
 * org.apache.hadoop.hbase.mapreduce.TsvImporterMapper
 * @author Hyman
 */
public class ImportEmp  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 ImportEmpMapper 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(ImportEmpMapper.class);
        
        job.setMapOutputKeyClass(ImmutableBytesWritable.class);
        job.setMapOutputValueClass(Put.class);
        
        FileInputFormat.addInputPath(job, new Path(args[1]));
        
		TableMapReduceUtil.initTableReducerJob(
		  args[0],        // output table
		  null,    // reducer class
		  job//
		);
		
		job.setNumReduceTasks(0);   // at least one, adjust as required
		
        int exitcode = job.waitForCompletion(true) ? 0 : 1;
		return exitcode;
	}
	
	public static void main(String[] args) throws Exception{
		
		Configuration conf = HBaseConfiguration.create();
		
		int exitcode = ToolRunner.run(//
				conf, //
				new ImportEmp(), //
				args//
			);
        System.exit(exitcode);
	}
}

 2.打包运行

在hbase中创建emp表(create 'emp','info')。export  jar包($HADOOP_HOME/jars/mapred.jar)

准备数据:上传到HDFS文件系统中(/user/ehp/hbase/importtsv/emp/input)

数据文件 emp.txt

7369	HEHE	CLERK	7902	1980-12-17	800.00		20
7499	ALLEN	SALESMAN	7698	1981-2-20	1600.00	300.00	30
7521	WARD	SALESMAN	7698	1981-2-22	1250.00	500.00	30
7566	JONES	MANAGER	7839	1981-4-2	2975.00		20
7654	MARTIN	SALESMAN	7698	1981-9-28	1250.00	1400.00	30
7698	BLAKE	MANAGER	7839	1981-5-1	2850.00		30
7782	CLARK	MANAGER	7839	1981-6-9	2450.00		10
7788	SCOTT	ANALYST	7566	1987-4-19	3000.00		20
7839	KING	PRESIDENT		1981-11-17	5000.00		10
7844	TURNER	SALESMAN	7698	1981-9-8	1500.00	0.00	30
7876	ADAMS	CLERK	7788	1987-5-23	1100.00		20
7900	JAMES	CLERK	7698	1981-12-3	950.00		30
7902	FORD	ANALYST	7566	1981-12-3	3000.00		20

 

HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase mapredcp`:${HBASE_HOME}/conf \
yarn jar $HADOOP_HOME/jars/mapred.jar \
com.hyman.ehp.mapred.hbase.ImportEmp \
emp \
/user/ehp/hbase/importtsv/emp/input

 

 相关内容

分享到:
评论

相关推荐

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

    总之,Java在Hive和HBase的数据交互中起到桥梁作用,通过精心设计的数据处理流程和合理的利用HBase的Bulk Load特性,可以高效地将Hive中的大量数据导入到HBase,满足实时查询的需求。在大数据场景下,这种方案具有很...

    mapreduce方式入库hbase hive hdfs

    mapreduce方式入库hbase hive hdfs,速度很快,里面详细讲述了代码的编写过程,值得下载

    hadoop的mapreduce把oracle/mysq导入到hbase和hdfs中的程序

    标题中的“hadoop的mapreduce把oracle/mysq导入到hbase和hdfs中的程序”指的是一项数据处理任务,利用Hadoop的MapReduce框架,将关系型数据库(如Oracle和MySQL)中的数据高效地迁移至分布式存储系统HDFS(Hadoop ...

    HDFS 通过mapreduce 进行 HBase 导入导出

    因此,通过 MapReduce 这种并行计算框架,可以从 HDFS 中将数据导入到 HBase,或者将 HBase 中的数据导出到 HDFS。 MapReduce 包含 Map 和 Reduce 两个主要阶段,Map 阶段将输入数据分片并进行并行处理,Reduce ...

    MR程序Bulkload数据到hbase

    2. **创建HBase表**:在运行MapReduce作业之前,需要在HBase中创建目标表,定义好列族和列。 3. **生成HFile**:MapReduce作业完成后,HFile文件会存在于HDFS上。这些文件是HBase可以直接读取的格式。 4. **HFile...

    java代码将mysql表数据导入HBase表

    数据迁移的核心在于编写Java代码,将MySQL中的数据读取并写入到HBase中。这里我们使用JDBC连接MySQL,使用HBase Java API操作HBase。以下是一个简单的示例: ```java import org.apache.hadoop.conf.Configuration;...

    HBase MapReduce完整实例.rar

    3. **数据准备**:可能包含一些模拟数据或实际数据,用于演示MapReduce任务的输入和HBase中的存储。 4. **运行脚本**:指导用户如何提交MapReduce作业到Hadoop集群,并监控作业执行情况。 5. **结果分析**:对...

    结合MapReduce和HBase的遥感图像并行分布式查询.pdf

    图像块被编码后存储在HBase中,便于高效定位和访问。 实验结果显示,随着Hadoop和HBase集群规模的扩大,图像数据的导入和检索速度显著提高。这种方法尤其适用于处理大量遥感图像,可以在普通X86架构的服务器上实现...

    HBase MapReduce完整实例

    在HBase中,MapReduce主要用于批量导入/导出数据、查询优化以及复杂的分析任务。通过HBase的TableInputFormat和TableOutputFormat,MapReduce作业可以直接读取和写入HBase表。Map阶段可以对表中的行或列族进行操作,...

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

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

    关系型数据库的数据导入Hbase

    本篇文章将详细介绍如何将关系型数据库的数据导入到Hbase中,包括离线和实时两种方式。 1. 离线数据导入: 离线数据导入通常在系统低峰期进行,适用于大量数据迁移。常见的工具包括Apache Nifi、Sqoop和Hadoop ...

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

    标题中的“hbase导入话单数据mapreduce函数实现执行过程实例”揭示了本文将探讨如何使用MapReduce在HBase中导入大数据,特别是话单记录。HBase是一个分布式、版本化的NoSQL数据库,常用于处理大规模的数据。...

    hbase海量数据的全量导入方法

    1. **预分区**:在导入数据前,根据预计的数据量创建足够的区域(region),避免数据导入过程中动态分区导致的性能损耗。 2. **使用HFileOutputFormat**:HBase提供了HFileOutputFormat类,可以将数据直接写入HFile...

    hbase备份和数据恢复

    2. HBase到Hive:通过MapReduce任务,将HBase中的数据导入到Hive,创建Hive表并加载数据。也可以使用HBaseSerDe来解析HBase数据。 三、HBase和HDFS互导 1. HBase到HDFS:可以通过HBase的Export工具,将HBase表的...

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

    【MapReduce输出至HBase详解】 MapReduce是Apache Hadoop框架中的一个核心组件,用于处理和生成大数据集。...在实际操作中,根据具体业务需求和数据特点进行调整,能够更好地发挥MapReduce和HBase的联合优势。

    HBase基本操作.pdf

    HBase中数据的修改实质上是添加新数据。`put '表名', '行值', '列族:列名', '数据'`命令用于向表中插入或更新数据。每个插入的数据都有一个时间戳,HBase可以通过时间戳来实现版本控制。 #### 9. Filter操作 HBase...

    Hive、MySQL、HBase数据互导

    - 运行Sqoop命令,将MySQL数据导入到HBase中。 **4. 使用HBase Java API把数据从本地导入到HBase中**: - 创建Java项目,导入HBase相关依赖库。 - 使用HBase的Admin API创建HBase表。 - 编写代码,使用Table和...

    MapReduce导出hbase数据工具BillFeeImport.jar

    hbase导入hbase导入

    hbase导入测试数据集

    在这个场景下,我们讨论的是如何在HBase中导入测试数据集,这通常在系统开发、测试和性能优化的过程中非常关键。 首先,我们需要了解HBase的基本概念。HBase通过表、行、列族和时间戳来组织数据。表是由行组成的,...

    通用MapReduce程序复制HBase表数据

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

Global site tag (gtag.js) - Google Analytics