整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

第11张 Pig

Pig为大型数据集的处理提供了更高层次的抽象。MapReduce使作为程序员 的你能够自己定义一个map函数和一个紧跟其后的reduce函数。但是,你 必须使你的数据处理过程与这一连续的map和reduce模式相匹配。很多时 候,数据处理需要多个MapReduce过程才能实现。而使得数据处理过程与 该模式匹配可能很困难。有了 Pig,就能使用更为丰富的数据结构。这些数 据结构往往都是多值和嵌套的。Pig还提供了一套更强大的数据变换操作, 包括在MapReduce中被忽视的连接(join)操作。

Pig包括两部分。
            (1) 用于描述数据流的语言,称为Pig Latin

(2) 用于运行Pig Latin程序的执行环境。当前有两个环境:单JVM中 的本地执行环境和Hadoop集群上的分布式执行环境。

Pig Latin 程序由一系列的“操作”(operation)或“变换”(transformation)组 成。每个操作或变换对输入进行数据处理,并产生输出结果。从整体上 看,这些操作描述了一个数据流。Pig执行环境把数据流翻译为可执行的内 部表示并运行它。在Pig内酣,这些变换操作被转换成一系列MapReduce 作业。但作为程序员,你多数情况下并不需要知道这些转换是如何进行 的。这样一来,你便可以将精力集中在数据上,而非执行细节上。

Pig是一种探索大规模数据集的脚本语言。MapReduce的一个缺点是开发周 期太长。写mapperreducer,对代码进行编译和打包,提交作业,获取结 果,这整个过程非常耗时。即便使用Streaming能在这一过程中去除代码的 编译和打包步骤,仍不能改善这一情况。Pig的诱人之处在于仅用控制台上 的五六行Pig Latin代码就能够处理TB级的数据。事实上,正是由于雅虎 公司想让科研人员和工程师能够更便捷地挖掘大规模数据集,才设计开发PigPig提供了多个命令来检査和处理程序中已有的数据结构。因此, 它能够很好地支持程序员撰写查询。Pig的一个更有用的特性是它支持在输 入数据的一个有代表性的子集上试运行。这样一来,用户可以在处理整个数 据集前检査程序执行时是否会有错误。

Pig被设计为可扩展的。处理路径中的几乎每个部分,包括载入、存储、过 滤、分组、连接,都可以定制。这些操作都可以使用用户定义函数(userdefined function, UDF) 进行修改。这些用户定义函数作用于 Pig 的嵌套数 据模型。因此,它们可以在底层与Pig的操作集成。UDF的另一个好处 是,相较于为了写MapReduce程序而开发库,它们更易于重用。

然而,Pig并不适合所有的数据处理任务。和^ MapReduce —样,它是为数 据批处理而设计的。如果想执行的查询只涉及一个大型数据集中的一小部 分数据,Pig的表现并不会很好。这是因为它要扫描整个数据集或其中的很 大一部分。

在有些情况下,Pig的表现不如MapReduce程序。但随着新版本的发布, Pig的开发团队使用了复杂、精巧的算法来实现Pig的关系型操作,二者的 差距不断缩小。公平地说,除非你愿意花大量时间来优化Java MapReduce 程序,否则使用Pig Latin来写查询的确能够帮你节约时间。

本章只介绍如何使用Pig的基础内容。要获得更详细的指南,可以参考 Alan GatesPig 程序设计》(Programming Pig)。

转载请注明:全栈大数据 » 第11张 Pig

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址