云计算PIG的使用.docx

上传人:王** 文档编号:1625517 上传时间:2024-11-25 格式:DOCX 页数:67 大小:209.91KB
下载 相关 举报
云计算PIG的使用.docx_第1页
第1页 / 共67页
云计算PIG的使用.docx_第2页
第2页 / 共67页
云计算PIG的使用.docx_第3页
第3页 / 共67页
云计算PIG的使用.docx_第4页
第4页 / 共67页
云计算PIG的使用.docx_第5页
第5页 / 共67页
云计算PIG的使用.docx_第6页
第6页 / 共67页
云计算PIG的使用.docx_第7页
第7页 / 共67页
云计算PIG的使用.docx_第8页
第8页 / 共67页
云计算PIG的使用.docx_第9页
第9页 / 共67页
云计算PIG的使用.docx_第10页
第10页 / 共67页
亲,该文档总共67页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《云计算PIG的使用.docx》由会员分享,可在线阅读,更多相关《云计算PIG的使用.docx(67页珍藏版)》请在优知文库上搜索。

1、云计算pig运用Hadoop的普及和其生态系统的不断壮大并不令人感到意外.Hadoop不断进步的一个特殊领域是Hadoop应用程序的编写,虽然编写Map和Reduce应用程序并不特别困难,但这典编程的确须要一线软件开发阅历,ApachePig变更了这种状况,它在MapReduce的权础上创建了更陆洁的过程语言抽象,为Hadoop应用程序供应了一种更加接近结构化查询谱吉(SQ1.)的接口因此,您不须要爆写一个单独的MapReduce应用程序,您可以用Pig1.atin语言写一个脚本,在集群中自动并行处理与分发该脚本.Pig1.atin示例让我们从一个简洁的Pig示例起先介绍.并剖析该示例.Had

2、oop的一个好玩的用法是,在大型数据毙中搜寻满度:某个给定搜寻条件的记录(在UnuW中被称为grep)。清单1显示了在Pig中实现该过程的筒洁性,在所显示的三行代码中,只有一行是JXiE的搜寻。第一行只是将测试数据集(消息日志)读收到代表元组集合的包中.用一个正则表达式来筛选该数抵(元组中的惟一条目,表示为$0或fie1.d1),然后查找字符序列WARN.最终.在主机文件系统中将这个包存储在一个名为Wammg的新文件中,这个包现在代表来自消息的包含WARN的全部元组。清单1.个简沽的Pig1.at1.n脚本messages=1.OADmessages;warns三FI1.TERmessages

3、BY$0MATCHES.WARN*.*;STOREwarnsINTOwarnings;如您所见,这个简沽的那本实现了一个简沽的流,但是,暇如干脆在传统的MapReduce模里中实现它,则须要增加大埴的代码,这使得学习Hadoop并起先运用数据比原始开发简洁得多.现在让我们更深化地探付Pig语言,然后在看该语言的一些功能的其他示例,回页首Pig1.atin的荔础学问Pig1.atin是一个相对简洁的语言,它可以执行语句,阿语句就是一个操作,它须要怆入些内容(比如代.表一个元组集的包),并发出另一个包作为其输出。一个包就是一个关系,与表类似,先可以在关系数据库中找到它(其中,元现代表行,并且短个元

4、羽都由字段如成),用p1g1.atin编写的脚本往往遵他以下特定格式,从文件系统读取数据,对数据执行系列操作以种或多种方式转换它),然后,将由此产生的关系写回文件系统,您可以在清单1中看到该模式的报商沽形式(一个转换Pig拥有大足的数据类型,不仅支持包、元组和映射等高级概念,还支持简洁的数据类型.如Int、1.ong%f1.oatdoub1.echararrafnbytearray.假如运用简沽的类型,您会发觉,除了称为bincond的条件运算符(其操作类似于CternarY运笄符)之外,还有其他很多笄术运算符(比如add.subtract.mu1.tip1.y,divide和modu1.e)

5、.并且.如您所期望的那样还有一套完整的比较运算符,包括运用正则表达式的丰富匹泡模式.全部Pig1.atin语句都须要对关系进行操作并被称为关系运驾符)。IE如您在清单1中看到的,有一个运算符用于从文件系统加规数据和符数据存储到文件系统中.有一种方式可以通过迭代关系的行来FI1.TER数据.此功能常用于从后续操作不用须要的关系中捌除数据.兄外,假如您须要对美系的列进行迭代,而不是而行进行迭代,您可以运用FOREACH运算符。FOREAcH允许进行嵌套操作,如FI1.TER和ORDER,以便在迭代过程中转换数据。ORDER运算符供应了基于一个说多个字段对关系进行排序的功能,JOIN运兑符基于公共字

6、段执行两个或两个以上的关系的内部或外部族接。SP1.IT运獴符供应了依据用户定义的表达式将一个关系拆分成两个或两个以上关系的功能。最终,GROUP运算符依据某个表达式将数据分组成为一个或多个关系.表1供应了Pig中的部分关系运算符列表.表1.Pig1.atin关系运修符的不完整列表运算符描述FI1.TER基于某个条件从关系中选择一组元组.FOREACH对某个关系的元祖进行迭代,生成一个数据转换.GROUP将数据分组为一个或多个关系JOIN联接两个或两个以上的关系(内部或外部联接).1.OAD从文件系统加教数据.ORDER依据一个或多个字段对关系进行排序。SP1.IT将一个关系划分为两个或两个以

7、上的关系.STORE在文件系统中存储数据.虽然这不是一个详尽的P1.g1.at1.n运算符清单,但该表供应了一套在处理大型数据集时特别有用的操作。您可以通过参考资料了解完整的Pig1.atin语言,因为P有一套不错的在线文档,现在尝试着手编写一些Pi61.atin脚本,以了解这些运算符的实际工作状况.回页首狭得Pg在有关Hadoop的早期文率中,我采纳的方法是籽Hadoop安装和配置为一个软件包,仅C1.oudera通过用1.inux符它打包为一个虚拟设爵.使得Hadoop更易于运用.虽然它是一个较大的下坡,但它已预建立井北置了虚拟机(VM).其中不仅有HadoOP.还包括了ApacheHiv

8、e和Pg因此,利用一个下我和免费供应的2型虚拟机管理程序(VIrtuaIBox或范于内核的虚拟机IKVM),您便可以拥有预配用的、己打算就绪的整个Hadoop环境.回页首止Hadoop和Pig自动并运行下我完您的特定虚拟机文件之后,须要为您的特定虚拟机管理程序创建一个VM在舂考资料中,您可以找到该操作的分步指南。C1.ouderaVM内存我发觉.仅为虚拟机安排IGB的内存时,它无法正常工作.将该内存安排提岗至两倍认至三倍时,它才能防正常运行(也就是说,不会出现Java*堆内存的问胭八一旦创隹了自己的VM就可以通过VirtUa1.BoX来启动它.VirtuaIBox引导1.inux内核,并启动全

9、部必要的Hadoop守护进程.完成引导后,从创建一个与Hadoop和Pig通信的终端起先相关操作.您UJ以在两种模式中任选一种来运用P1.g.第一种是1.oca1.(本地)模式,它不须要依粘Hadoop或Hadoop分布式文件系统(HDFS),在该模式中,全部操作都在本地文件系式上下文中的单一Java虚拟机(JVM)Jt执行.另一种模式是MapReduce模式,它运用了Hadoop文件系统和集群.1.oCaI模式的Pig对于1.oca1.模式,只需启动Pig并用eectype选项指定1.oca1.模式即可.这样做可以将您带入Grunt外壳,使您能够以交互方式输入Pig语句:$pig-X1.oc

10、a1.grunt在这里,您能够以交互方式编写Pig1.atin脚本的代码,并查看每个运算符后面的结果“返回清单1.并尝试运用这个脚本(参见清单2),留意,在这种状况下木纪要将数据存储到某个文件中.只衢将它转储为一祖关系,您可能会在惨改后的输出中看到,每个日志行(与FI1.TER定义的搜寻条件相匹配)本身就是一个关系(以括号1()1为界)。清单2.在1.oca1.模式中以交互方式运用Piggruntmessages=1.OAD,var1.ogmessages,;gruntwarns三FI1.TERmessagesBY$0MATCHESTWARN,;gruntDUMPwarns(Dec1003:5

11、6:431.oca1.hostNetworkManager:nm_genenc_enab1.e_1.oopbackO:error.(Dec1006:10:181.oca1.hostNetworkManager:check_one_routeO:(eth)error.grnt假如您已经指定STORE运修符,届么它会在一个指定名称的书目(而不是一个简洁的常规文件)中生成您的数据.Mapreduce模式中的Pig对于MapReduce模式,必需首先确保Hadoop正在运行。要做到这一点,最筒沽的方法是在Hadoop文件系统树的根上执行文件列衣操作,如清单3所示.清单3.测试Hadoop可用性$had

12、oopdfs-Is/02011-12-0805:20tmp02011-120805:20/user02011-120805:20varFound3itemsdrwxrwxrw-huesupergroupdrwxr-xr-x-huesupergroupdrwxr-xr-xmapredsupergroup如清单3所示,掇如Hadoop胜利运行.此代码的结果会是一个或多个文件组成的列表.现在,让我们来测试Pt从启动Pi8起先,然后将书目更改为您的HDFS根,以确定在HDFS中是否可以看到外部所看到的结果(参见清单4).清单4.测试Pig$Pig2011-12-1006:39:44,276mainIN

13、FO-1.oggingerrormessagesto.2011-12-1006:39:44,601mainINFOorg.apache.pig.Connectingtohadoopfi1.esystemat:hdfs:/O.O.O.O:8O2O2011-12-1006:39:44,988(mainINFO.connectingtomap-reducejobtrackerat:0.0.0.0:8021gruntcdhdfs:/gruntIshdfsO.O.O.OtmphdfsO.O.O.OuserhdfsO.O.O.Ovargrunt到目前为止一切都很好。您可以在Pig中看到您的HactooP文

14、件系统,所以,现目前为试从您的本地主机文件系统将一些数据读取到HDFS中.可以通过Pig将某个文件从本地复制到HDFS(叁见清单5.清华5.获得一些测试数据gruntmkdirtestgruntcdtestgruntCopyFrom1.ocaIetcpasswdpasswdgruntIshdfsO.O.O.Otestpasswd1728接下来,在Hadoop文件系统中测试数据现在是平安的,您可以去成另一个脚本,清留意,您可以在P内cat文件.皆看其内容(只是看看它是否存在).在这个特殊示例中,籽商定在passwd文件中为用户指定的外壳数址(在passwd文件中的最终一列,要起先执行该操作,须要

15、从HDFS将6的passwd文件我入一个P.g关系中。在运用1.OAD运算符之前就要完成该操作.但在这种状况卜您可健希望将密码文件的字段解析为多个独立的字段.在本例中.我们指定/PigStorage函数您可以运用它来显示文件的分隔符(本例中,是算号:字符)您也可以用AS关键字指定独立字段(或架构),包括它们的独立类型(卷见清单6).清单6.将文件读入一个关系中grntpasswd=1.OAD,etcpasswd,USINGPigStorageCAS(userxhararray,Passwdxhararrayzuid:intzgid:int,UserinfoxhararrayrhomexhararrayfShe1.1.xhararray);gruntDUMPpasswd;(rootz,OzOootrootbinbash)(bin,xr1.z1.,binzbinsbinno1.ogin)(couderazxi500f500homec1.ouderabnbash)grunt接卜来,运用GROUP运算符依据元蝴的外壳将元组分组到该关系中(参见清学7,再次转储此关

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 服务器

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!