MapReduce显示最受欢迎的Top10课程(按照课程编号)
上篇博客已经说过,会将代码进行优化,并通过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课程(按照课程编号)的更多相关文章
- javaweb中上传图片并显示图片,用我要上传课程信息(里面包括照片)这个例子说明
原理: 从客户端上传到服务器 照片——文件夹——数据库 例如:桌面一张照片,在tomacat里创建upload文件夹,把桌面照片上传到upload文件夹里,并且把照片的 ...
- 按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示: 学生ID,,数据库,企业管理,英语,有效课程数,有效平均分
SELECT S# as 学生ID ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库 ,(SELECT score FROM S ...
- [bug] CDH安装中断 再次安装显示当前受管 无法选择
参考 https://blog.csdn.net/JacksonKing/article/details/104350313 重装 https://blog.csdn.net/simle168/art ...
- 单片机课程设计——课程设计之四位加法计算器(2)(C代码)
#include<reg52.h> typedef unsigned char uint8; typedef unsigned int uint16; sbit rw=P2^5; sbit ...
- 【学习笔记】B站-2019-NLP(自然语言处理)之 BERT 课程 -- 相关课程笔记
BERT 课程笔记 1. 传统方案遇到的问题 BERT的核心在于Transformer,Transformer就类似seq2seq网络输入输出之间的网络结构. 传统的RNN网络:最大的问题,因为不能并 ...
- 北京大学信息科学技术学院本科生课程体系课程大纲选登——计算机网络与WEB技术
- ETL项目2:大数据清洗,处理:使用MapReduce进行离线数据分析并报表显示完整项目
ETL项目2:大数据清洗,处理:使用MapReduce进行离线数据分析并报表显示完整项目 思路同我之前的博客的思路 https://www.cnblogs.com/symkmk123/p/101974 ...
- Android训练课程(Android Training) - 高效的显示图片
高效的显示图片(Displaying BitmapsEfficiently) 了解如何使用通用的技术来处理和读取位图对象,让您的用户界面(UI)组件是可响应的,并避免超过你的应用程序内存限制的方式.如 ...
- mapreduce数据处理——统计排序
接上篇https://www.cnblogs.com/sengzhao666/p/11850849.html 2.数据处理: ·统计最受欢迎的视频/文章的Top10访问次数 (id) ·按照地市统计最 ...
随机推荐
- 浅谈:Redis持久化机制(二)AOF篇
浅谈:Redis持久化机制(二)AOF篇 上一篇我们提及到了redis的默认持久化方式RDB,是一种通过存储快照数据方式持久化的机制,它在宕机后会丢失掉最后一次更新RDB文件后的数据,这也是由于它 ...
- 错误档案2:MySQL8.0连接C3P0的问题
>>>跳过BB,空降正文<<< 目录 前言 问题出现 解决方法 结论 前言 大家好呀,我是 白墨,一个热爱学习与划水的矛盾体. 前两天在使用C3P0连接池时遇到问题 ...
- 导出 Excel 模板自动生成规则,避免用户来回修改
一句话总结 Excel 导出.导入时,根据注解自动添加单元格验证规则,避免用户因填写错误的枚举字段而反复修改 Excel 需求背景 对于 Java Web 项目,总是不可避免的出现 Excel 导入. ...
- Fedora 34成哑巴了?
原由 前几天刚更新了Fedora34,完全沉浸在Gnome40的喜悦中.但是今天用耳机听Apple Music的时候完全傻了,音量控制旋钮调了半天也没有声音,难道声卡坏了?于是,我试探性的用Parro ...
- NX二次开发】Block UI 选择特征
属性说明 属性 类型 描述 常规 BlockID String 控件ID Enable Logical 是否可操作 Group ...
- 面试总被问到HTTP缓存机制及原理?看完你就彻底明白了
前言 Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个基础环节,同时对于有志成为前端架构师的同学来说是必备的知识技能. 但是对于很多前端 ...
- noip2007 总结
统计数字 原题 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺 ...
- Unity3D学习笔记1——绘制一个三角形
目录 1. 绪论 2. 概述 3. 详论 3.1. 准备 3.2. 实现 3.3. 解析 3.3.1. 场景树对象 3.3.2. 绘制方法 4. 结果 1. 绪论 最近想学习一下Unity3d,无奈发 ...
- 机械革命z2安装ubuntu20
为了性能买了个游戏本机械革命z2,但还是想用上linux,身为程序员习惯了linux的开发环境有点离不开.但是之前尝试安装deepin或者linux都失败了,一是N卡条件下安装过程和安装之后的显示有问 ...
- Redis的Pipeline、事务和lua
1. Pipeline 1.1 Pipeline概念 Redis客户端执行一条命令分别为如下4个过程: 1) 发送命令 2) 命令排队 3) 命令执行 4) 返回结果 其中1)+4)称为Round T ...