WordCount案例
WordCount案例
- 需求
- 1. 需求说明
- 2. 文件
- 案例分析
- 1.需求分析
- 2.输入数据
- 3.期望输出数据
- 4.Mapper类
- 5. Reducer类
- 6. Driver类
- 代码实现
- 1. 编写Mapper类
- 2. 编写Reducer类
- 3.编写Driver类
- 结果截图
需求
1. 需求说明
在给定的文本文件中统计输出每一个单词出现的总次数
2. 文件
案例分析
1.需求分析
在给定的文本文件中对内容进行统计,累加每一个单词出现的总次数并输出。
2.输入数据
3.期望输出数据
4.Mapper类
(1)将Maptask传给我们的文本内容转化为String
(2)根据空行进行单词的切割
(3)将单词输出为<单词,1>
5. Reducer类
(1)汇总各个key的个数
(2)输出该key的次数
6. Driver类
(1)获取配置信息,获取job对象实例
(2)指定本程序的jar包所在的本地路径
(3)关联Mapper和Reducer业务类
(4)指定Mapper输出数据的kv类型
(5)指定最终输出的数据的kv类型
(6)指定job的输入原始文件所在的目录
(7)指定job的输出结果所在的目录
(8)提交job
代码实现
1. 编写Mapper类
package com.atguigu.mr.wordcount;import java.io.IOException;import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;//map阶段
/** KEYIN 输入数据的key* VALUEIN 输入数据的value* KEYOUT 输出数据的key的类型* VALUEOUT 输出数据的value类型*/
public class WordcountMapper extends Mapper<LongWritable, Text, Text, IntWritable> {Text k = new Text();IntWritable v = new IntWritable(1);@Overrideprotected void map(LongWritable key, Text value, Context context)throws IOException, InterruptedException {//atguigu//获取1行String line = value.toString();//切割单词String[] words = line.split(" ");//循环写出for (String word : words) {k.set(word);context.write(k, v);}}
}
2. 编写Reducer类
package com.atguigu.mr.wordcount;import java.io.IOException;import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;public class WordcountReducer extends Reducer<Text, IntWritable, Text, IntWritable> {IntWritable v = new IntWritable();@Overrideprotected void reduce(Text key, Iterable<IntWritable> values,Context context) throws IOException, InterruptedException {//atguigu 1//atguigu 1int sum = 0;//累加求和for (IntWritable value : values) {sum += value.get();}v.set(sum);//写出atguigu 2context.write(key, v);}}
3.编写Driver类
package com.atguigu.mr.wordcount;import java.io.File;
import java.io.IOException;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;public class WordcountDriver {public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {// 输入输出路径需要根据自己电脑上实际的输入输出路径设置args = new String[] { "S:\\centos学习笔记\\input\\wcinput", "S:\\centos学习笔记\\output\\wcoutput" };Configuration conf = new Configuration();//获取Job对象Job job = Job.getInstance(conf);//设置jar存储位置job.setJarByClass(WordcountDriver.class);//关联Map和Reduce类job.setMapperClass(WordcountMapper.class);job.setReducerClass(WordcountReducer.class);//设置Mapper阶段输出数据key和value类型job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWritable.class);//设置最终数据输出的key和value类型job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);// job.setCombinerClass(WordcountReducer.class);//设置输入路径和输出路径FileInputFormat.setInputPaths(job, new Path(args[0]));FileOutputFormat.setOutputPath(job, new Path(args[1]));//提交Job
// job.submit();boolean result = job.waitForCompletion(true);System.out.println(result? 0 : 1);}}
结果截图
WordCount案例相关推荐
- Spark快速上手-WordCount案例
在此之前,我已经用MapReduce 框架实现了WordCount案例,接下来,我开始学习数据处理的另外一个非常重要的方法:Spark.首先,使用WordCount案例实现Spark快速上手. 创建M ...
- MapReduce流程(WordCount案例实现)
文章目录 1 MapReduce概述 设计构思 实例进程 实例进程分类 完整执行过程 总结 2 MapReduce编程规范 Map阶段2个步骤 Shuffle阶段4个步骤 Reduce阶段2个步骤 3 ...
- MapReduce之WordCount案例
前言 学习大数据框架通常都是从wordcount案例开始的,也是学习框架的基础,wordcount虽然简单,如果能彻底搞清楚其运行原理,对后续深入学习和掌握MapReduce非常有帮助的,本篇以一个w ...
- MapReduce入门(一)—— MapReduce概述 + WordCount案例实操
MapReduce入门(一)-- MapReduce概述 文章目录 MapReduce入门(一)-- MapReduce概述 1.1 MapReduce 定义 1.2 MapReduce 优缺点 1. ...
- 2. WordCount案例实操
文章目录 WordCount案例实操 1. 官方WordCount源码 2. 常用数据序列化类型 3. MapReduce编程规范 3.1 Mapper阶段 3.2 Reducer阶段 3.3 Dri ...
- 大数据培训课程WordCount案例实操
WordCount案例实操 1.需求 在给定的文本文件中统计输出每一个单词出现的总次数 (1)输入数据 (2)期望输出数据 atguigu 2 banzhang 1 cls 2 hadoop ...
- Spark WordCount 案例
文章目录 Spark WordCount 案例 1.程序连接 Spark 2.WordCount 案例示例 3.复杂版 WordCount 4.Spark 框架Wordcount Spark Word ...
- Scala语言实现WordCount案例以及几个高级函数的使用总结
实现案例前需要熟悉scala中集合的几个高级函数: 映射:集合.map() 即拿到集合中元素做某些处理,返回当前集合的类型. 扁平化:集合.flatten() 就是提取外层集合中的内层集合中的元素,打 ...
- MapReduce和sparks运行wordcount案例过程分析
MapReduce执行wordcount案例分析 1.先将磁盘中的文件读入到内存,按行读取,如图所示 2.将文件分割成每个一行一行数据之后,MapReduce框架会自动将我们的一行一行数据转化为< ...
最新文章
- mysql多表联查分页_sqlserver多表联合查询和多表分页查询的代码讲解
- 【已解决】window10任务栏图标显示异常解决方法--有详细解释
- KMP算法的动态规划解说
- Doctrine官方手册 - 缓存
- PowerShell【变量篇】
- 可以以数据内容当列名来统计数据
- camera (19)---Android 相机开发的基本流程
- C++设计模式详解之命令模式解析
- go - reflect
- BXP无盘的更新操作详解(大镜像)(转)
- 推荐|Java学习资料大全(电子书+视频)
- sop流程图模板_SOP模板-标准操作流程编写程序.doc
- JavaScript逻辑运算与或非
- Win10 安装Docker 杂记
- 2021全国特种设备-Q2桥式起重机司机模拟考试题库一[安考星]
- 卷土重来的FCoin日本站,你被割了吗?
- 爱情的诗·6~10节
- 软考之数据库系统工程师之知识点整理
- 移动开发之百度地图导航及定位
- matlab进度条的使用