上篇博客已经说过,会将代码进行优化,并通过TreeMap进行排序实现,现在简单说明一下代码的思路。

  项目以上传到github:https://github.com/yandashan/MapReduce_Count2.git


  这次的代码是根据课程的id进行排序的,map的流程和普通的WordCount流程差不多,只是实现了在分割数据时对数据的读取和分割功能,然后在reduce上下了一些文章。

  我们知道,在MapReduce执行过程中会执行一个一个Task的方法,用于数据传输过程中的缓存,我们的想法,就是在接收到map传输过来的数据之后,不是立刻输出,而是把它放在一个TreeMap中,实现自动的排序,然后等待Reduce Task将所有map发送过来的数据全部收集完毕后,再执行cleanup方法(cleanup方法使在所有的reduce方法执行完毕之后才开始执行的),我们也就是在cleanup中设置方法,按照一定的要求将数据进行发出。大体流程如下图:


关键代码:

  MyReduce:

 

  将value的值进行取出,累加求和,并且封装到PageCount对象中,暂时存储到TreeMap。

  cleanup:

  

  在执行job方法时进行动态的设置,然后在job方法中进行设置。

  

  结果如下图所示;


  

  关于在运行过程中,通过传递不同参数获取输出前几位的值,我们有以下几种方法进行选择。

  第一种方法:

  按照上面的代码进行操作。

  第二种方法:

  在运行过程中,向主函数中传递一个值

  

  右击主函数,选择Run As-》Run Configurations...  在这里输入你要输出的个数。

  

  以上两种方法都是通过代码设置进行的,但是在实际的项目中,我们为了尽量少的更改代码,不能将值写死,所以,我们采用配置文件的方法进行设置。

  第三种方法:

  创建一个属性配置文件topn.properties,输入 top.n = 10 ,即动态设置top.n的值,在job主方法中写如下代码:

  

  第四种方法:

  通过加载XML文件进行解析。

  XML文件中写如下代码:

  

  然后加载XML文件:

  

  

MapReduce显示最受欢迎的Top10课程(按照课程编号)的更多相关文章

  1. javaweb中上传图片并显示图片,用我要上传课程信息(里面包括照片)这个例子说明

    原理:  从客户端上传到服务器                照片——文件夹——数据库 例如:桌面一张照片,在tomacat里创建upload文件夹,把桌面照片上传到upload文件夹里,并且把照片的 ...

  2. 按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示: 学生ID,,数据库,企业管理,英语,有效课程数,有效平均分

    SELECT S# as 学生ID ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库 ,(SELECT score FROM S ...

  3. [bug] CDH安装中断 再次安装显示当前受管 无法选择

    参考 https://blog.csdn.net/JacksonKing/article/details/104350313 重装 https://blog.csdn.net/simle168/art ...

  4. 单片机课程设计——课程设计之四位加法计算器(2)(C代码)

    #include<reg52.h> typedef unsigned char uint8; typedef unsigned int uint16; sbit rw=P2^5; sbit ...

  5. 【学习笔记】B站-2019-NLP(自然语言处理)之 BERT 课程 -- 相关课程笔记

    BERT 课程笔记 1. 传统方案遇到的问题 BERT的核心在于Transformer,Transformer就类似seq2seq网络输入输出之间的网络结构. 传统的RNN网络:最大的问题,因为不能并 ...

  6. 北京大学信息科学技术学院本科生课程体系课程大纲选登——计算机网络与WEB技术

  7. ETL项目2:大数据清洗,处理:使用MapReduce进行离线数据分析并报表显示完整项目

    ETL项目2:大数据清洗,处理:使用MapReduce进行离线数据分析并报表显示完整项目 思路同我之前的博客的思路 https://www.cnblogs.com/symkmk123/p/101974 ...

  8. Android训练课程(Android Training) - 高效的显示图片

    高效的显示图片(Displaying BitmapsEfficiently) 了解如何使用通用的技术来处理和读取位图对象,让您的用户界面(UI)组件是可响应的,并避免超过你的应用程序内存限制的方式.如 ...

  9. mapreduce数据处理——统计排序

    接上篇https://www.cnblogs.com/sengzhao666/p/11850849.html 2.数据处理: ·统计最受欢迎的视频/文章的Top10访问次数 (id) ·按照地市统计最 ...

随机推荐

  1. cuSPARSELt开发NVIDIA Ampere结构化稀疏性

    cuSPARSELt开发NVIDIA Ampere结构化稀疏性 深度神经网络在各种领域(例如计算机视觉,语音识别和自然语言处理)中均具有出色的性能.处理这些神经网络所需的计算能力正在迅速提高,因此有效 ...

  2. NVIDIA Nsight Systems CUDA 跟踪

    NVIDIA Nsight Systems CUDA 跟踪 CUDA跟踪 NVIDIA Nsight Systems能够捕获有关在概要过程中执行CUDA的信息. 可以在报告的时间轴上收集和呈现以下信息 ...

  3. Nucleus 实时操作系统中断(下)

    Nucleus 实时操作系统中断(下) Nucleus RTOS兼容性 由于中断在Nucleus SE中的实现方式与Nucleus rto截然不同,因此不应期望有特定的兼容性.Nucleus RTOS ...

  4. 『言善信』Fiddler工具 — 5、Fiddler界面布局详解【会话列表】

    目录 1.会话列表说明 2.会话列表不同颜色的含义 3.会话列表图标说明 4.会话列表应用设置 (1)给Fiddler会话列表增加IP列 (2)添加自定义列 (3)添加完成请求时间 (4)其他操作 1 ...

  5. SpringBoot原理深入及源码剖析(一) 依赖管理及自动配置

    前言 传统的Spring框架实现一个Web服务需要导入各种依赖jar包,然后编写对应的XML配置文件等,相较而言,SpringBoot显得更加方便.快捷和高效.那么,SpringBoot究竟是如何做到 ...

  6. jps不是内部或外部命令, 亲测有用

    https://blog.csdn.net/qq_41558341/article/details/105676741 亲测有用, 别的链接找了一大堆,无用

  7. Etcd中Raft joint consensus的实现

    Joint consensus 分为2个阶段,first switches to a transitional configuration we call joint consensus; once ...

  8. pytest初始化与清除(一)

    一.初始化函数 1.测试用例级别:def setup() 2.套件级别(在模块文件中定义):def setup_module() 3.套件级别(在类中定义): @classmethod def set ...

  9. UF_DRAW 制图操作

    Open C uc6476uc6477uc6478uc6479uc6480uc6481uc6482uc6483uc6484uc6485uc6486uc6488uc6489uc6492uc6494uc6 ...

  10. oracle数据库归档日志量陡增分析

    ============= oracle数据库archivelog暴增分析 ==================== 前言 归档量突然增长到981G/天,导致归档目录使用率告警 归档日志量异常暴增会导 ...