您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 实验-MapReduce编程初级实践
实验3MapReduce编程初级实践1.实验目的1.通过实验掌握基本的MapReduce编程方法;2.掌握用MapReduce解决一些常见的数据处理问题,包括数据去重、数据排序和数据挖掘等。2.实验平台已经配置完成的Hadoop伪分布式环境。3.实验内容和要求1.编程实现文件合并和去重操作对于两个输入文件,即文件A和文件B,请编写MapReduce程序,对两个文件进行合并,并剔除其中重复的内容,得到一个新的输出文件C。下面是输入文件和输出文件的一个样例供参考。实验最终结果(合并的文件):代码如下:package;importclassMerge{publicstaticclassMapextendsMapperObject,Text,Text,Text{privatestaticTexttext=newText();publicvoidmap(Objectkey,Textvalue,Contextcontext)throwsIOException,InterruptedException{text=value;(text,newText());}}publicstaticclassReduceextendsReducerText,Text,Text,Text{publicvoidreduce(Textkey,IterableTextvalues,Contextcontext)throwsIOException,InterruptedException{(key,newText());}}publicstaticvoidmain(String[]args)throwsException{Configurationconf=newConfiguration();(,);String[]otherArgs=newString[]{input,output};if!=2){Usage:Mergeandduplicateremovalinout);(2);}Jobjob=(conf,Mergeandduplicateremoval);;;;;;(job,newPath(otherArgs[0]));(job,newPath(otherArgs[1]));(true)?0:1);}}2.编写程序实现对输入文件的排序现在有多个输入文件,每个文件中的每行内容均为一个整数。要求读取所有文件中的整数,进行升序排序后,输出到一个新的文件中,输出的数据格式为每行两个整数,第一个数字为第二个整数的排序位次,第二个整数为原待排列的整数。下面是输入文件和输出文件的一个样例供参考。实验结果截图:代码如下:package;importclassMergeSort{publicstaticclassMapextendsMapperObject,Text,IntWritable,IntWritable{privatestaticIntWritabledata=newIntWritable();publicvoidmap(Objectkey,Textvalue,Contextcontext)throwsIOException,InterruptedException{Stringline=();(line));(data,newIntWritable(1));}}publicstaticclassReduceextendsReducerIntWritable,IntWritable,IntWritable,IntWritable{privatestaticIntWritablelinenum=newIntWritable(1);publicvoidreduce(IntWritablekey,IterableIntWritablevalues,Contextcontext)throwsIOException,InterruptedException{for(IntWritableval:values){(linenum,key);linenum=newIntWritable()+1);}}}publicstaticvoidmain(String[]args)throwsException{Configurationconf=newConfiguration();(,);String[]otherArgs=newString[]{input2,output2};/*直接设置输入参数*/if!=2){Usage:mergesortinout);(2);}Jobjob=(conf,mergesort);;;;;;(job,newPath(otherArgs[0]));(job,newPath(otherArgs[1]));(true)?0:1);}}3.对给定的表格进行信息挖掘下面给出一个child-parent的表格,要求挖掘其中的父子辈关系,给出祖孙辈关系的表格。实验最后结果截图如下:代码如下:package;import.*;importclassSTjoin{publicstaticinttime=0;publicstaticclassMapextendsMapperObject,Text,Text,Text{publicvoidmap(Objectkey,Textvalue,Contextcontext)throwsIOException,InterruptedException{Stringchild_name=newString();Stringparent_name=newString();Stringrelation_type=newString();Stringline=();inti=0;while(i)!=''){i++;}String[]values={(0,i),(i+1)};if(values[0]pareTo(child)!=0){child_name=values[0];parent_name=values[1];relation_type=1;(newText(values[1]),newText(relation_type+++child_name+++parent_name));relation_type=2;(newText(values[0]),newText(relation_type+++child_name+++parent_name));}}}publicstaticclassReduceextendsReducerText,Text,Text,Text{publicvoidreduce(Textkey,IterableTextvalues,Contextcontext)throwsIOException,InterruptedException{if(time==0){(newText(grand_child),newText(grand_parent));time++;}intgrand_child_num=0;Stringgrand_child[]=newString[10];intgrand_parent_num=0;Stringgrand_parent[]=newString[10];Iteratorite=();while()){Stringrecord=().toString();intlen=();inti=2;if(len==0)continue;charrelation_type=(0);Stringchild_name=newString();Stringparent_name=newString();while(i)!='+'){child_name=child_name+(i);i++;}i=i+1;while(ilen){parent_name=parent_name+(i);i++;}if(relation_type=='1'){grand_child[grand_child_num]=child_name;grand_child_num++;}else{grand_parent[grand_parent_num]=parent_name;grand_parent_num++;}}if(grand_parent_num!=0&&grand_child_num!=0){for(intm=0;mgrand_child_num;m++){for(intn=0;ngrand_parent_num;n++){(newText(grand_child[m]),newText(grand_parent[n]));}}}}}publicstaticvoidmain(String[]args)throwsException{Configurationconf=newConfiguration();(,);String[]otherArgs=newString[]{input3,output3};if!=2){Usage:SingleTableJoininout);(2);}Jobjob=(conf,Singletablejoin);;;;;;(job,newPath(otherArgs[0]));(job,newPath(otherArgs[1]));(true)?0:1);}}4.实验报告《云计算》实验报告题目:MapReduce编程初级实践姓名包生友日期:2016/12/20实验环境:机房的虚拟机上配置好的环境解决问题的思路:根据老师给的代码进行操作实验内容与完成情况:已完成,与同学商量后仍有部分代码尚未知道其作用所在出现的问题:执行之后,出现未找到main函数情况,再次执行会报错,说文件已经存在。解决方案(列出遇到的问题和解决办法,列出没有解决的问题):问题:1.执行之后,出现未找到main函数情况2.再次执行会报错,说文件已经存在。解决办法:删除输出文件即可(程序执行时输出文件不能存在)5.实验总结通过本次实验,使我掌握基本的MapReduce编程方法;掌握用MapReduce解决一些常见的数据处理问题,包括数据去重、数据排序和数据挖掘等。短暂的云计算课程实验到此结束,到我知道对云计算的学习是没有尽头的。
本文标题:实验-MapReduce编程初级实践
链接地址:https://www.777doc.com/doc-8591176 .html