版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
^.^.^.实验项目名称 多表关联 实验成绩 实验者专业班级组别同组者实验日期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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南农业大学《力学》2021-2022学年第一学期期末试卷
- 我的家乡广东湛江
- 《信息科学类专业英语》课件第24章
- 大班数学教案小猪和十二只蚊子反思
- 护理师培训心得体会(33篇)
- 北京西城区某中学2024届高考压轴卷语文试题试卷含解析
- 2024至2030年中国铁金杆锁行业投资前景及策略咨询研究报告
- 2024至2030年中国浮化玻璃设备行业投资前景及策略咨询研究报告
- 答案-广东开放大学《形式与政策》你所从事的行业和工作《决定》中提出怎样的改革举措
- 2024至2030年中国抛弃式防静电带行业投资前景及策略咨询研究报告
- 《体育场馆照明方案》课件
- 明确目标推动团队发展计划
- 《傅雷家书》读书分享
- 2024年国家公务员考试《申论》真题(副省级)及答案解析
- 福建省厦门市2023-2024学年高一上学期语文期末考试试卷(含答案)
- 北京邮电大学《自然语言理解》2022-2023学年期末试卷
- 个人简历模板(5套完整版)
- 英语-时文阅读-7年级(8篇)
- 内科学教学课件:肝性脑病
- 以价值引领铸就企业文化之魂
- (完整版)博物馆陈列布展工程施工方案
评论
0/150
提交评论