版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
^.^.^.实验项目名称 多表关联 实验成绩 实验者专业班级组别同组者实验日期2016.1.9第一部分:实验分析与设计(可加页)实验内容描述(问题域描述)输入两个文件:一个代表工厂表,包含工厂名列和地址编号列;另一个代表地址表,包含地址名列和地址编号列。从输入数据中找出工厂名和地址名的对应关系,输出“工厂名——地址名”表,按工厂名排序输出;数据文件自己设计样例。实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)具体的算法实现如下:publicclassMTjoin{publicstaticinttime=0;/*在map中先区分输入行属于左表还是右表,然后对两列值进行分割,*保存连接列在key值,剩余列和左右表标志在value中,最后输出*/publicstaticclassMapextendsMapper<Object,Text,Text,Text>{//实现map函数public voidmap(Object key,Textvalue,Contextcontext)throwsIOException,InterruptedException{Stringline=value.toString();//每行文件Stringrelationtype=newString();// 左右表标识//输入文件首行,不处理if(line.contains("factoryname")==true||line.contains("addressed")==true){return;}//输入的一行预处理文本StringTokenizeritr=newStringTokenizer(line);Stringmapkey=newString();Stringmapvalue=newString();inti=0;while(itr.hasMoreTokens()){//先读取一个单词Stringtoken=itr.nextToken();//判断该地址ID就把存到"values[0]"if(token.charAt(0)>='0'&&token.charAt(0)<='9'){mapkey=token;if(i>0){relationtype="1";}else{relationtype="2";}continue;}//存工厂名mapvalue+=token+"";i++;}//输出左右表context.write(newText(mapkey),newText(relationtype+"+"+mapvalue));}}/*reduce解析map输出,将value中数据按照左右表分别保存,*然后求出笛卡尔积,并输出。*/publicstaticclassReduceextendsReducer<Text,Text,Text,Text>{//实现reduce函数publicvoidreduce(Textkey,Iterable<Text>values,Contextcontext)throwsIOException,InterruptedException{//输出表头if(0==time){context.write(new Text("factoryname"), newText("addressname"));time++;}intfactorynum=0;String[]factory=newString[10];intaddressnum=0;String[]address=newString[10];Iteratorite=values.iterator();while(ite.hasNext()){Stringrecord=ite.next().toString();intlen=record.length();inti=2;if(0==len){continue;}//取得左右表标识charrelationtype=record.charAt(0);//左表if('1'==relationtype){factory[factorynum]=record.substring(i);factorynum++;}//右表if('2'==relationtype){address[addressnum]=record.substring(i);addressnum++;}}//求笛卡尔积if(0!=factorynum&&0!=addressnum){for(intm=0;m<factorynum;m++){for(intn=0;n<addressnum;n++){//输出结果context.write(newText(factory[m]),newText(address[n]));}}}}}}publicstaticvoidmain(String[]args)throwsException{Configurationconf=newConfiguration();//conf.set("mapred.job.tracker",":9001");//String[]ioArgs=newString[]{"MTjoin_in","MTjoin_out"};String[]otherArgs=newGenericOptionsParser(conf,args).getRemainingArgs();if(otherArgs.length!=2){System.err.println("Usage:MultipleTableJoin<in><out>");System.exit(2);}Jobjob=newJob(conf,"MultipleTableJoin");job.setJarByClass(MTjoin.class);//设置Map和Reduce处理类job.setMapperClass(Map.class);job.setReducerClass(Reduce.class);//设置输出类型job.setOutputKeyClass(Text.class);job.setOutputValueClass(Text.class);//设置输入和输出目录FileInputFormat.addInputPath(job,newPath(otherArgs[0]));FileOutputFormat.setOutputPath(job,newPath(otherArgs[1]));System.exit(job.waitForCompletion(true)?0:1);}}三、主要仪器设备及耗材Ubuntu、Hadoop、PC^.^.^.第二部分:实验调试与结果分析(可加页)第二部分:实验调试与结果分析(可加页)一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)1.调试方法描述以下是部分核心Hadoop的调试过程截图(1)主节点:namenode(2)配置jdk:第二部分:实验调试与结果分析(可加页)第二部分:实验调试与结果分析(可加页)一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)1.调试方法描述(3)配置ssh:(4)配置Hadoop第二部分:实验调试与结果分析(可加页)第二部分:实验调试与结果分析(可加页)一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)2.实验输入数据记录输入两个txt文件:代表工厂表的文件(factory.txt)和代表地址表的文件(adsress.txt)第二部分:实验调试与结果分析(可加页)第二部分:实验调试与结果分析(可加页)3.实验输出数据记录运行过程输入的命令如下所示:删除已经存在的output文件夹(包括子目录):hadoopfs-rmroutput在hadoop指定目录内创建新目录:hadoopfs-mkdirinput将factory.txt文件夹存储至hadoop:hadoopfs-putfactoryinput将address.txt文件夹存储至hadoop:hadoopfs-putaddressinput运行已经打包好的MTJoin.java文件:hadoopjarMTJoin.jarMTJoininputoutput查看运行结果:hadoopfs-catoutput/part-r-00000输入查看结果命令就会按要求输出“工厂名——地址名”表,按工厂名排序输出。二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)1.结果描述输入工厂表对应的文件factory.txt和地址表对应的文件address.txt,则按要求输出了“工厂名——地址名”表。完成了实验要求。2.实验现象分析在配置Hadoop的过程中遇到了很多问题,因为对Hadoop的不熟悉导致多次重启系统,但是最后还是较好的完成了实现,在实验的规程中并没有出现过于严重的问题。3.影响因素讨论首先我们必须完成Hadoop的集群配置:安装Linux系统,推荐Ubuntu14.03,建议直接使用hadoop作为用户安装、配置jdk、更改环境变量、配置ssh、用jps验证集群是否配置成功,使用多台计算机连接主节点和多个次节点完成多台计算机的并行分布。这些配置的过程对于该实验是非常重要的,只有搭建好了Hadoop才能完成该实验。同时设计好数据文件也会直接影响数据的输出。4.算法分析(包括时间和空间)若工厂表长度为N,地址表的长度为M,则时间复杂度为O(N*M),空间复杂度为O(1)。^.^.^.第二部分:实验调试与结果分析第二部分:实验调试与结果分析(可加页)二、实验小结、建议及体会多表关联和单表关联相似,都类似于数据库中的自然连接。相比单表关联,多表关联的左右表和连接列更加清楚。所以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽车模具2025版性能优化开发合同
- 2025年度木材出口合同范本与执行细则4篇
- 2025版学校小卖部与校园周边商家联盟合同3篇
- 2025版建筑设备安装工程安全生产消防合同3篇
- 2025版外语教学机构兼职外教招聘合同样本3篇
- 2025年人力资源服务合同解除协议
- 2025年前雇主员工竞业禁止合同样本模板
- 2025版个人合伙退伙协议书纠纷处理指南4篇
- 2025年云石打边蜡水项目投资可行性研究分析报告
- 2025年度骆采与陈鹏的离婚财产分割及子女抚养权合同4篇
- GB/T 45107-2024表土剥离及其再利用技术要求
- 2024-2025学年八年级上学期1月期末物理试题(含答案)
- 商场电气设备维护劳务合同
- 2023年国家公务员录用考试《行测》真题(行政执法)及答案解析
- 2024智慧医疗数据字典标准值域代码
- 年产12万吨装配式智能钢结构项目可行性研究报告模板-立项备案
- 【独家揭秘】2024年企业微信年费全解析:9大行业收费标准一览
- 医疗器械经销商会议
- 《±1100kV特高压直流换流变压器使用技术条件》
- 1-1 拥抱梦想:就这样埋下一颗种子【2022中考作文最热8主题押题24道 构思点拨+范文点评】
- 《风电场项目经济评价规范》(NB-T 31085-2016)
评论
0/150
提交评论