Hadoop生态系统中的pig框架简单介绍以及整理

作者: admin 分类: Hadoop 发布时间: 2018-03-08 11:27  阅读: 691 views

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

Pig包括两部分。

1)用户描述数据流的语言,成为Pig Latin .

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

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

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

pig的一个特性是支持在输入数据的一个有代表性的子集上试运行,就可以在处理整个数据集前检查程序执行时是否会有错误。

Pig被设计为可扩展的。处理路径中的几乎每个部分,载入、存储、过滤、分组、连接都可以定制。都可以用用户定义函数进行修改。

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

Pig安装与运行

Pig是作为一个客户端应用程序运行的。即使准备在Hadoop集群上运行Pig,也无需再集群上额外安装其他:Pig从工作站上发出作业,并在工作站上和HDFS进行交互。

Pig的安装,安装时需要JAVA 6 (windows 上需要 Cygwin)

Pig的执行类型

Pig有两种执行类型或称为模式(mode): 本地模式(local mode)和MapReduce模式(MapReduce mode) 【本地模式Pig运行在单个JVM中,访问本地文件系统,该模式只适用于处理小规模数据集或调试Pig.MapReduce模式下,Pig将查询翻译成MapReduce作业,然后在Hadoop集群上执行。后者适用于处理大规模数据集】

Pig程序的执行方法(有三种)

1. 脚本:Pig可以运行包含Pig命名的脚本文件。

2.Grunt是运行Pig命令的交互式外壳环境(shell).

3.嵌入式方法:可以在java中通过PigServer类运行Pig程序。

Pig与数据库的比较

Pig和关系数据库管理系统(RDBMS)之间,有几个方面不同

1. Pig Latin是一种数据流编程语言,而SQL是我一种声明式编程语言。

2. Pig对复杂、嵌套数据结构的支持也使其不同于只能处理平面数据类型的SQL.Pig的语言能够和UDF【user-defined-function】以及流式操作紧密集成。Pig Latin的这一能力及其嵌套数据结构,它比大多数SQL的变种具有更强的定制能力。RDBMS具有一些支持在线和低延迟查询的特性,如事务和索引。这些特性是PIG所缺乏的


   原创文章,转载请标明本文链接: Hadoop生态系统中的pig框架简单介绍以及整理

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

更多阅读