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案例相关推荐

  1. Spark快速上手-WordCount案例

    在此之前,我已经用MapReduce 框架实现了WordCount案例,接下来,我开始学习数据处理的另外一个非常重要的方法:Spark.首先,使用WordCount案例实现Spark快速上手. 创建M ...

  2. MapReduce流程(WordCount案例实现)

    文章目录 1 MapReduce概述 设计构思 实例进程 实例进程分类 完整执行过程 总结 2 MapReduce编程规范 Map阶段2个步骤 Shuffle阶段4个步骤 Reduce阶段2个步骤 3 ...

  3. MapReduce之WordCount案例

    前言 学习大数据框架通常都是从wordcount案例开始的,也是学习框架的基础,wordcount虽然简单,如果能彻底搞清楚其运行原理,对后续深入学习和掌握MapReduce非常有帮助的,本篇以一个w ...

  4. MapReduce入门(一)—— MapReduce概述 + WordCount案例实操

    MapReduce入门(一)-- MapReduce概述 文章目录 MapReduce入门(一)-- MapReduce概述 1.1 MapReduce 定义 1.2 MapReduce 优缺点 1. ...

  5. 2. WordCount案例实操

    文章目录 WordCount案例实操 1. 官方WordCount源码 2. 常用数据序列化类型 3. MapReduce编程规范 3.1 Mapper阶段 3.2 Reducer阶段 3.3 Dri ...

  6. 大数据培训课程WordCount案例实操

    WordCount案例实操 1.需求 在给定的文本文件中统计输出每一个单词出现的总次数 (1)输入数据 (2)期望输出数据 atguigu   2 banzhang 1 cls   2 hadoop  ...

  7. Spark WordCount 案例

    文章目录 Spark WordCount 案例 1.程序连接 Spark 2.WordCount 案例示例 3.复杂版 WordCount 4.Spark 框架Wordcount Spark Word ...

  8. Scala语言实现WordCount案例以及几个高级函数的使用总结

    实现案例前需要熟悉scala中集合的几个高级函数: 映射:集合.map() 即拿到集合中元素做某些处理,返回当前集合的类型. 扁平化:集合.flatten() 就是提取外层集合中的内层集合中的元素,打 ...

  9. MapReduce和sparks运行wordcount案例过程分析

    MapReduce执行wordcount案例分析 1.先将磁盘中的文件读入到内存,按行读取,如图所示 2.将文件分割成每个一行一行数据之后,MapReduce框架会自动将我们的一行一行数据转化为< ...

最新文章

  1. mysql多表联查分页_sqlserver多表联合查询和多表分页查询的代码讲解
  2. 【已解决】window10任务栏图标显示异常解决方法--有详细解释
  3. KMP算法的动态规划解说
  4. Doctrine官方手册 - 缓存
  5. PowerShell【变量篇】
  6. 可以以数据内容当列名来统计数据
  7. camera (19)---Android 相机开发的基本流程
  8. C++设计模式详解之命令模式解析
  9. go - reflect
  10. BXP无盘的更新操作详解(大镜像)(转)
  11. 推荐|Java学习资料大全(电子书+视频)
  12. sop流程图模板_SOP模板-标准操作流程编写程序.doc
  13. JavaScript逻辑运算与或非
  14. Win10 安装Docker 杂记
  15. 2021全国特种设备-Q2桥式起重机司机模拟考试题库一[安考星]
  16. 卷土重来的FCoin日本站,你被割了吗?
  17. 爱情的诗·6~10节
  18. 软考之数据库系统工程师之知识点整理
  19. 移动开发之百度地图导航及定位
  20. matlab进度条的使用

热门文章

  1. 【 ML 】Steepest Descent Iteration Procedure of TOA - Based Positioning Simulation
  2. 【 FPGA 】数字系统设计方法的演变
  3. 巴克码相关器的verilog HDL设计
  4. C# 8新提案让泛型Attribute成为现实
  5. web前端之JavaScript
  6. mongoengine中queryset触发网络访问机制剖析
  7. 总结android项目的基本开发步骤(转帖)
  8. 下面首先来看GCD的使用
  9. WCF分布式开发步步为赢(1):WCF分布式框架基础概念
  10. DDR读写简介及相关