大数据讲课笔记5.7 MR案例—TopN

Posted howard2005

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据讲课笔记5.7 MR案例—TopN相关的知识,希望对你有一定的参考价值。

文章目录

零、学习目标

  1. 理解TopN分析法
  2. 实现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的主要内容,如果未能解决你的问题,请参考以下文章

大数据讲课笔记5.5 MapReduce经典案例——倒排索引

MR案例 - 成绩分组排行榜

MR案例 - TopNScore [成绩分组排行榜]

十二道MR习题 - 4 - TopN问题

大数据讲课笔记1.8 shell基础

大数据讲课笔记1.5 使用Vim编辑器