杭州知名的网站建设策划,网站制作评价标准,top网站怎么做,wordpress+禁用版本运行结果附图 本节课程主要内容为学习MapReduc设计模式#xff0c;并编写java程序对日志文件进行处理。 课本上介绍的MapReduce的设计模式主要包含:计数(Counting),分类(Classification),过滤处理(Filtering),排序(Sorting),去重计数(Distinct Counting),相关计数(Cross-Corre…运行结果附图 本节课程主要内容为学习MapReduc设计模式并编写java程序对日志文件进行处理。 课本上介绍的MapReduce的设计模式主要包含:计数(Counting),分类(Classification),过滤处理(Filtering),排序(Sorting),去重计数(Distinct Counting),相关计数(Cross-Correlation). 本次作业选取了其中两个设计模式进行练习:排序(Sorting) ,去重计数(Distinct Counting) 排序(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代码截图如下: (5) 运行结果如下: 去重计数(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的设置和连接 (5)运行结果如下: 问题记录 在第二个设计模式的实现过程中因为涉及到两个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