文档章节

Hadoop的mapreduce的简单用法

魔法王者安琪拉
 魔法王者安琪拉
发布于 2018/08/23 10:11
字数 439
阅读 193
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

 Mapreduce初析

  Mapreduce是一个计算框架,既然是做计算的框架,那么表现形式就是有个输入(input),mapreduce操作这个输入(input),通过本身定义好的计算模型,得到一个输出(output),这个输出就是我们所需要的结果。

  我们要学习的就是这个计算模型的运行规则。在运行一个mapreduce计算任务时候,任务过程被分为两个阶段:map阶段和reduce阶段,每个阶段都是用键值对(key/value)作为输入(input)和输出(output)。而程序员要做的就是定义好这两个阶段的函数:map函数和reduce函数。

  Mapreduce的基础实例

  jar包依赖

<dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <version>2.7.6</version>
</dependency>

代码实现

 map类

 

public class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> {
	private final static IntWritable one = new IntWritable(1);
	private Text word = new Text();

	public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
		StringTokenizer itr = new StringTokenizer(value.toString());
		while (itr.hasMoreTokens()) {
			word.set(itr.nextToken());
			context.write(word, one);
		}
	}
}

 

reduce类

public class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
	private IntWritable result = new IntWritable();

	public void reduce(Text key, Iterable<IntWritable> values, Context context)
			throws IOException, InterruptedException {
		int sum = 0;
		for (IntWritable val : values) {
			sum += val.get();
		}
		result.set(sum);
		context.write(key, result);
	}

}

  main方法

   

public class WordCount {
	public static void main(String[] args) throws Exception {
		Configuration conf = new Configuration();
		Job job = Job.getInstance(conf, "word count");
		job.setJarByClass(WordCount.class);
		job.setMapperClass(TokenizerMapper.class);
		job.setCombinerClass(IntSumReducer.class);
		job.setReducerClass(IntSumReducer.class);
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(IntWritable.class);
		FileInputFormat.addInputPath(job, new Path(args[0]));
		FileOutputFormat.setOutputPath(job, new Path(args[1]));
		System.exit(job.waitForCompletion(true) ? 0 : 1);

	}
}

打成jar包放到hadoop环境下

./hadoop-2.7.6/bin/hadoop jar hadoop-mapreduce-1.0.0.jar com.dongpeng.hadoop.mapreduce.wordcount.WordCount /user/test.txt /user/in.txt

 

© 著作权归作者所有

魔法王者安琪拉

魔法王者安琪拉

粉丝 80
博文 110
码字总数 51108
作品 0
深圳
程序员
私信 提问
加载中

评论(0)

Hadoop1.x程序升级到Hadoop2.x需要的依赖库

阿里云智能数据库事业部 OLAP 平台团队现向 2021 届海内外院校应届毕业生(毕业时间在2020年11月-2021年10月之间)招聘大数据系统工程师,有机会转正,有意请加 iteblog 微信内推。   根据...

Hadoop
2013/11/26
0
0
Hadoop系列(三):hadoop基本测试

下面是对hadoop的一些基本测试示例 Hadoop自带测试类简单使用 这个测试类名叫做 hadoop-mapreduce-client-jobclient.jar,位置在 hadoop/share/hadoop/mapreduce/ 目录下 不带任何参数可以获...

osc_rs0lpejm
2018/11/15
2
0
【MapReduce】一、MapReduce简介与实例

(一)MapReduce介绍 1、MapReduce简介   MapReduce是Hadoop生态系统的一个重要组成部分,与分布式文件系统HDFS、分布式数据库HBase一起合称为传统Hadoop的三驾马车,一起构成了一个面向海...

osc_n41kxg36
2019/07/09
6
0
hadoop面试题(自己整理版)

1、 hadoop 运行原理 2、 mapreduce 原理 3、 mapreduce 的优化 4、举一个简单的例子说下 mapreduce 是怎么运行的 5、 hadoop 中 combiner 的作用 6、简述 hadoop 的安装 7、请列出 hadoop 的...

stone1234567890
2018/07/16
0
0
Hadoop 中利用 mapreduce 读写 mysql 数据

有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv、uv 数据,然后为了实时查询的需求,或者一些 OLAP 的需求,我们需要 mapreduce 与 mysql 进行数据的交互,而这些特...

大数据之路
2013/07/29
1W
1

没有更多内容

加载失败,请刷新页面

加载更多

如何限制利用spring boot 框架自动限制上传文件

spring:   application:     name: appname   servlet:     multipart:       enabled: true       max-file-size: 512MB       max-request-size: 512MB @Ex...

osc_31d5oo2i
32分钟前
24
0
NATAPP1分钟快速新手图文教程(远程办公程序员联调神器)

NATAPP官方地址:https://natapp.cn/ 应用场景:前后端异地联调、系统演示、远程临时访问 首先在本站注册账号 点击注册 登录后,点击左边 购买隧道,免费/付费均可 根据需要选择隧道协议,这里以...

明德先生
34分钟前
16
0
李子柒的视频为什么这么吸引人?对她在B站上发布的视频进行分析

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者:CDA数据分析师 加企鹅群695185429即可免费获取,资料全...

osc_tc2z9lbh
34分钟前
25
0
MySQL如何有效的存储IP地址

前几天,阿淼的一个朋友去面试,他回来告诉我,面试官问他 IP 地址是怎么存在数据库的?他当时也没多想,直接就回答的存字符串啊(心想:这么简单的问题,怕不是看不起我吧) 前面这段权当看...

osc_q5m9dzk0
35分钟前
32
0
一口气说出8种幂等性解决重复提交的方案,面试官懵了!

1.什么是幂等 在我们编程中常见幂等 1)select查询天然幂等 2)delete删除也是幂等,删除同一个多次效果一样 3)update直接更新某个值的,幂等 4)update更新累加操作的,非幂等 5)insert非幂等操作...

osc_kd8rd7b3
37分钟前
16
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部