hadoop5--mapreduce设计模式

运行结果附图

本节课程主要内容为学习MapReduc设计模式,并编写java程序对日志文件进行处理。

课本上介绍的MapReduce的设计模式主要包含:计数(Counting),分类(Classification),过滤处理(Filtering),排序(Sorting),去重计数(Distinct Counting),相关计数(Cross-Correlation).

本次作业选取了其中两个设计模式进行练习:排序(Sorting) ,去重计数(Distinct Counting)

  1. 排序(Sorting)

    (1) 设计模式思想:

    map对每条记录的排序属性进行计算,得出排序属性的值
    reduce对同一分组下的记录按照排序属性值进行排序

    (2) 目标问题:

    对access.log中的每个用户的每条记录的总数据流量(上行流量+下行流量)按照从小到大的顺序输出

    (3) java代码主要思路:

    问题中的排序属性值为数据总流量,故在map阶段计算出每条数据的总流量,又因为是要对每个用户的总流量进行排序,
    故map的输出key为userid,value为原始数据记录以及排序属性(即总流量)
    reduce阶段就是对同一用户的所有记录按照其总流量进行排序,java代码中具体实现是将同一用户的所有带有总流量的记录存放到一个ArrayList中,
    然后使用Collections.sort(list,comparactor)进行排序,在comparactor中override的compare方法中依据总流量进行了升序排序

    (4) java代码截图如下:

    2015-04-26 17:21:41 的屏幕截图

    2015-04-26 17:22:24 的屏幕截图

    (5) 运行结果如下:

    st

    st2

    st3

  2. 去重计数(Distinct Counting)

    (1) 设计模式思想:

    分为两个步骤,步骤一中map输出属性组合为key,计数1为value的结果,reduce仅输出属性组合,相当于完成了去重工作

    步骤二中map对属性组合中的一个属性进行1的计数,reduce阶段将计数累加,完成了计数工作

    (2) 目标问题:

    对access.log文件中的网址的不同用户访问数进行计数

    (3) java代码主要思路:

    使用了两个job实现的,每一个job中一个map一个reduce.

    第一阶段的map输出以userid与hostname组成的属性组合为key,计数1为value;reduce输出的就是属性组合

    第二阶段的map输出以hostname为key,计数1为value;reduce对每个hostname下的计数1累加完成计数

    (4) java代码截图如下:

    因为使用了两个job完成任务,所以在main函数中有一系列配置工作完成连个job的设置和连接

    2015-04-26 19:02:47 的屏幕截图

    2015-04-26 19:03:12 的屏幕截图

    2015-04-26 19:04:05 的屏幕截图

    2015-04-26 19:25:40 的屏幕截图

    (5)运行结果如下:

    newcd

    newcd1

    newcd2

    newcd3

问题记录

在第二个设计模式的实现过程中因为涉及到两个job,所以要完成一系列的配置工作,通过上网查找学习

基本的配置步骤如下:

(1)分别创建两个Job对象job1,job2 为两个job配置好相应的Map类,Reduce类,输出类型,以及输入路径和输出路径,注意job2的输入路径为job1的输出路径,即job2直接处理job1的结果

(2)分别创建两个ControlledJob对象ctrljob1和ctrljob2,利用setJob()方法设置其job分别为job1和job2

(3)设置ctrljob1和ctrljob2的依赖关系,保证job2的启动依赖与job1的完成

ctrljob2.addDependingJob(ctrljob1);

(4)创建主控制JobControl对象 jobCtrl,并将ctrljob1,ctrljob2加入进去

jobCtrl.addJob(ctrljob1);jobCtrl.addJob(ctrljob2);

(5)创建线程,执行jobCtrl,直至jobCtrl完成所有任务,停止jobCtrl

转载于:https://www.cnblogs.com/ivywenyuan/p/4579372.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/374935.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ES5中新增的Array方法详细说明

http://www.zhangxinxu.com/wordpress/2013/04/es5%E6%96%B0%E5%A2%9E%E6%95%B0%E7%BB%84%E6%96%B9%E6%B3%95/转载于:https://www.cnblogs.com/lmw425317/p/5339539.html

jqGrid,REST,AJAX和Spring MVC集成

两年多以前,我写了一篇关于两个如何在Struts2中实现优雅的CRUD的文章。 实际上,我必须就该主题写两篇文章,因为该主题如此广泛。 今天,我采用了一套更为流行的,完善的框架和库,采用了更为轻量级的现代方法。…

Java-马士兵设计模式学习笔记-代理模式--动态代理 修改成可以代理任意接口

一、概述 1.目标:把Proxy修改成可以代理任意接口及其任意方法 2.思路: (1)代理任意接口:把接口类型作为参数传给Proxy的newProxyInstance(Class interfze) (2)代理任意方法:用interfze.getMethods()取出所有方法,拼接实…

PTA习题

PTA习题 PTA浙大版《C语言程序设计(第3版)》 题目集5-6 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。 本题要求编写两个函数,一个判断给定整数是否水仙花数,…

acdream 1409 Musical 状压DP

链接:http://acdream.info/problem?pid1409 题意:整个国家有n座城市,每座城市有三种粉丝。 第一种一周看一场音乐剧,挑选的音乐剧是已经在周围城市播放上演过的次数最多的音乐剧中的随机一个。 另外一种每天看一场音乐剧&#xf…

真正的模块化Web应用程序:为什么没有开发标准?

OSGI , SpringSource , Jboss模块 ,J2EE和清单永远不会结束。所有这些技术都向他们的最终用户/开发人员保证了相同的东西,或多或少是Java模块化Web应用程序(?)。 但是,我们当中有多少…

C语言5-7习题

本题要求实现一个函数&#xff0c;用下列公式求cos(x)的近似值&#xff0c;精确到最后一项的绝对值小于e&#xff1a; #include <stdio.h> #include <math.h>double funcos( double e, double x );int main() { double e, x;scanf("%lf %lf", &…

JDBC批处理executeBatch

JDBC运行SQL声明&#xff0c;有两个处理接口&#xff0c;一PreparedStatement,Statement,一般程序JDBC有多少仍然比较PreparedStatement 只要运行批处理&#xff0c;PreparedStatement少一点Statement ps conn.prepareStatement(sql); for(int i 0;i<10;i){ ps.setString(…

BC div2补题以及 复习模除 逆元__BestCoder Round #78 (div.2)

第一题没话说 智商欠费 加老柴辅导终于过了 需要在意的是数据范围为2的63次方-1 三个数相加肯定爆了 四边形的定义  任意边小于其余三边之和 换句话说就是  最长边小于其余三边之和 这样的话问题转化为 最长边依次减其余三边的结果是否小于等于0 还有一点是题目出现0边 即最…

习题6-1 分类统计字符个数 (15 分)

本题要求实现一个函数&#xff0c;统计给定字符串中英文字母、空格或回车、数字字符和其他字符的个数。 函数接口定义&#xff1a; void StringCount( char s[] );其中 char s[] 是用户传入的字符串。函数StringCount须在一行内按照 letter 英文字母个数, blank 空格或回车…

Servlet 3.0异步处理可将服务器吞吐量提高十倍

Servlet是Java中处理服务器端逻辑的主要组件&#xff0c;新的3.0规范引入了一些非常有趣的功能&#xff0c;其中异步处理是最重要的功能之一。 可以利用异步处理来开发高度可伸缩的Web应用程序。 使用此功能可以有效地构建Web 2.0站点和AJAX应用程序。 我们的JCG合作伙伴之一To…

使用secureCRT连接VMware-Ubuntukylin虚拟机

使用SecureCRT连接VMware时总是提醒主机拒绝连接。这时可以使用sudo apt-get install openssh-server openssh-client&#xff0c;在主机上安装ssh. 安装成功后&#xff0c;可以连接到主机了。 如果显示远程主机拒绝连接。则可以使用如下方法。 VMware里面装的是Ubuntukylin版本…

加载音频Audio

var cameraAudio new Audio(); cameraAudio.src camera.wav;// 设置音频对象的属性,预加载视频 var options_audio { preload : auto } for(var key in options_audio){ if(options_audio.hasOwnProperty(key) && (key in cameraAudio)){ cameraAudio[key] opti…

习题6-2 使用函数求特殊a串数列和 (20 分)

给定两个均不超过9的正整数a和n&#xff0c;要求编写函数求aaaaaa⋯aa⋯a&#xff08;n个a&#xff09;之和。 int fn( int a, int n ); int SumA( int a, int n );其中函数fn须返回的是n个a组成的数字&#xff1b;SumA返回要求的和。 我的代码&#xff1a; int fn( int a, i…

Java中可怕的双重检查锁定成语

本文讨论的问题不是新问题&#xff0c;但即使是经验丰富的开发人员也仍然很棘手。 单例模式是常见的编程习惯。 但是&#xff0c;当与多个线程一起使用时&#xff0c;必须进行某种类型的同步&#xff0c;以免破坏代码。 Khangaonkar报告中的 JCG合作伙伴Manoj Khangaonkar在一篇…

国内有哪些好的刷题网站?

http://www.zhihu.com/question/25574458 Luau Lawrence&#xff0c;Data Mining 弱鸡 / PhDNTU 温梦强、石一帆、知乎用户 等人赞同 - Welcome To PKU JudgeOnline 北京大学的Online Judge。POJ上面的题目有点老了&#xff0c;但好处是做的人多&#xff0c;经典算法题多&…

IE版本判断

我们常常会在网页的HTML里面看到形如[if lte IE 9]……[endif]的代码&#xff0c;表示的是限定某些浏览器版本才能执行的语句&#xff0c;那么这些判断语句的规则是什么呢&#xff1f;请看下文&#xff1a; <!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]…

Js 流程控制

流程控制 顺序、分支、循环 顺序结构 代码一行一行从上往下执行并解析 分支结构 if语句 switch语句 if语句 单分支 if(条件表达式){ //语句块 } 含义&#xff1a;当条件表达式为真的时候就执行里面的语句块 示例&#xff1a; 双分支&#xff1a; if(条件表达式){ //语句块1 }el…

习题6-3 使用函数输出指定范围内的完数 (20 分)

本题要求实现一个计算整数因子和的简单函数&#xff0c;并利用其实现另一个函数&#xff0c;输出两正整数m和n&#xff08;0<m≤n≤10000&#xff09;之间的所有完数。所谓完数就是该数恰好等于除自身外的因子之和。例如&#xff1a;6123&#xff0c;其中1、2、3为6的因子。…

速览Java 7 MethodHandle及其用法

由于Java的Reflection API&#xff0c;我们已经能够在运行时检查和更改程序执行。 特别是&#xff0c;我们可以在运行时观察接口/类/方法和字段&#xff0c;而在编译时不知道它们的名称。 JDK 7为这种动态/运行时检查引入了一个新的参与者&#xff0c;即方法句柄&#xff08;即…