大数据讲课笔记5.7 MR案例—TopN
Posted howard2005
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据讲课笔记5.7 MR案例—TopN相关的知识,希望对你有一定的参考价值。
文章目录
零、学习目标
- 理解TopN分析法
- 实现TopN分析法
一、导入新课
- 通过上节课的学习,我们熟悉了MapReduce经典案例——数据去重的具体实现流程。本节课将针对MapReduce经典案例——TopN进行详细讲解。
二、新课讲解
(一)案例分析
1、TopN分析法介绍
- TopN分析法是指从研究对象中按照某一个指标进行倒序或正序排列,取其中所需的N个数据,并对这N个数据进行重点分析的方法。
2、案例需求及分析
- 现假设有数据文件num.txt,现要求使用MapReduce技术提取上述文本中最大的5个数据,并最终将结果汇总到一个文件中。
(1) 先设置MapReduce分区为1,即ReduceTask个数一定只有一个。我们需要提取TopN,即全局的前N条数据,不管中间有几个Map、Reduce,最终只能有一个用来汇总数据。
(2) 在Map阶段,使用TreeMap数据结构保存TopN的数据,TreeMap默认会根据其键的自然顺序进行排序,也可根据创建映射时提供的 Comparator进行排序,其firstKey()方法用于返回当前集合最小值的键。
(3) 在Reduce阶段,将Map阶段输出数据进行汇总,选出其中的TopN数据,即可满足需求。这里需要注意的是,TreeMap默认采取正序排列,需求是提取5个最大的数据,因此要重写Comparator类的排序方法进行倒序排序。
(二)案例实现
1、Map阶段实现
- 使用IntelliJ开发工具创建Maven项目TopN,并且新建
net.hw.mr
包,在该路径下编写自定义Mapper类TopNMapper,主要用于将文件中的每行数据进行切割提取,并把数据保存到TreeMap中,判断TreeMap是否大于5,如果大于5就需要移除最小的数据。TreeMap保存了当前文件最大5条数据后,再输出到Reduce阶段。
2、Reduce阶段实现
- 根据Map阶段的输出结果形式,同样在
net.hw.mr
包下,自定义Reducer类TopNReducer,主要用于编写TreeMap自定义排序规则,当需求取最大值时,只需要在compare()方法中返回正数即可满足倒序排列,reduce()方法依然是要满足时刻判断TreeMap中存放数据是前五个数,并最终遍历输出最大的5个数。
3、Driver程序主类实现
- 编写MapReduce程序运行主类TopNDriver,主要用于对指定的本地
D:\\\\topN\\\\input
目录下的源文件(需要提前准备)实现TopN分析,得到文件中最大的5个数,并将结果输入到本地D:\\\\topN\\\\output
目录下。
4、效果测试
- 为了保证MapReduce程序正常执行,需要先在本地
D:\\\\topN\\\\input
目录下创建文件num.txt;然后,执行MapReduce程序的程序入口TopNDriver类,正常执行完成后,在指定的D:\\\\topN\\\\output
目录下生成结果文件。
三、归纳总结
- 回顾本节课所讲的内容,并通过提问的方式引导学生解答问题并给予指导。
四、上机操作
- 形式:单独完成
- 题目:实现TopN
- 要求:让学生自己按照步骤实现TopN的功能,以此来巩固本节的学习内容。写一篇CSDN博客,记录操作过程。
以上是关于大数据讲课笔记5.7 MR案例—TopN的主要内容,如果未能解决你的问题,请参考以下文章