• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > Hadoop之——HBASE结合MapReduce批量导入数据,hadoopmapreduce

Hadoop之——HBASE结合MapReduce批量导入数据,hadoopmapreduce

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含hadoop mapreduce,hadoop mapreduce原理,hadoop mapreduce实例,hadoop中的mapreduce,hbase mapreduce等服务器相关知识,网友希望可以进行参考

Hadoop之——HBASE结合MapReduce批量导入数据,hadoopmapreduce


转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46463889

废话不多说,直接上代码,你懂得

package hbase;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.mapreduce.TableOutputFormat;
import org.apache.hadoop.hbase.mapreduce.TableReducer;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Counter;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
/**
 * HBASE结合MapReduce批量导入
 * @author liuyazhuang
 */
public class BatchImport {
	static class BatchImportMapper extends Mapper<LongWritable, Text, LongWritable, Text>{
		SimpleDateFormat dateformat1=new SimpleDateFormat("yyyyMMddHHmmss");
		Text v2 = new Text();
		
		protected void map(LongWritable key, Text value, Context context) throws java.io.IOException ,InterruptedException {
			final String[] splited = value.toString().split("\t");
			try {
				final Date date = new Date(Long.parseLong(splited[0].trim()));
				final String dateFormat = dateformat1.format(date);
				String rowKey = splited[1]+":"+dateFormat;
				v2.set(rowKey+"\t"+value.toString());
				context.write(key, v2);
			} catch (NumberFormatException e) {
				final Counter counter = context.getCounter("BatchImport", "ErrorFormat");
				counter.increment(1L);
				System.out.println("出错了"+splited[0]+" "+e.getMessage());
			}
		};
	}
	
	static class BatchImportReducer extends TableReducer<LongWritable, Text, NullWritable>{
		protected void reduce(LongWritable key, java.lang.Iterable<Text> values, 	Context context) throws java.io.IOException ,InterruptedException {
			for (Text text : values) {
				final String[] splited = text.toString().split("\t");
				
				final Put put = new Put(Bytes.toBytes(splited[0]));
				put.add(Bytes.toBytes("cf"), Bytes.toBytes("date"), Bytes.toBytes(splited[1]));
				put.add(Bytes.toBytes("cf"), Bytes.toBytes("msisdn"), Bytes.toBytes(splited[2]));
				//省略其他字段,调用put.add(....)即可
				context.write(NullWritable.get(), put);
			}
		};
	}
	
	public static void main(String[] args) throws Exception {
		final Configuration configuration = new Configuration();
		//设置zookeeper
		configuration.set("hbase.zookeeper.quorum", "hadoop0");
		//设置hbase表名称
		configuration.set(TableOutputFormat.OUTPUT_TABLE, "wlan_log");
		//将该值改大,防止hbase超时退出
		configuration.set("dfs.socket.timeout", "180000");
		
		final Job job = new Job(configuration, "HBaseBatchImport");
		
		job.setMapperClass(BatchImportMapper.class);
		job.setReducerClass(BatchImportReducer.class);
		//设置map的输出,不设置reduce的输出类型
		job.setMapOutputKeyClass(LongWritable.class);
		job.setMapOutputValueClass(Text.class);
		
		job.setInputFormatClass(TextInputFormat.class);
		//不再设置输出路径,而是设置输出格式类型
		job.setOutputFormatClass(TableOutputFormat.class);
		
		FileInputFormat.setInputPaths(job, "hdfs://hadoop0:9000/input");
		
		job.waitForCompletion(true);
	}
}


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MapReduce排序及实例,MapReduce排序实例
  • Hadoop之——HBASE结合MapReduce批量导入数据,hadoopmapreduce
  • Hadoop MapReduce编程的一些个人理解,hadoopmapreduce
  • 在Windows上使用Eclipse配置Hadoop MapReduce开发环境,hadoopmapreduce

相关文章

  • R.net简介(原创翻译),r.net简介原创翻译
  • Elasticsearch之Nested Object Mapping,elasticsearch
  • libvirt网络过滤规则:禁止客户机(bridge方式)连接外网,libvirtbridge
  • Mahout-HashMap的进化版FastByIdMap,mahout
  • 大数据处理算法一:Bitmap算法,数据处理bitmap算法
  • Docker在Ubuntu的部署实践,dockerubuntu部署
  • Docker exec与Docker attach,dockerexecattach
  • 使用sqoop,sqoop2使用
  • OpenStack-API开发,openstackapi
  • 在streaming process中为什么需要类似sql查询语言,streamingprocess

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • mahout简介及安装配置
    • 大数据的两种处理方式,数据两种处理方式
    • 博文点评后的一点闲扯,博文点评闲扯
    • mongodb基础操作,mongodb基础
    • R720 disable hyperthreading,r720hyperthreading
    • 观点 | 为什么说云主机比物理机故障率更低?,云主机
    • 2015 OpenCloud峰会总结,2015opencloud峰会
    • Mahout的BreimanExample例子分析,mahoutexample
    • 家,我日夜思念的名字,我回来了,
    • 云计算资源分享与下载,资源分享

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有