Pig架构


用于使用Pig分析Hadoop中数据的语言称为 Pig Latin 。它是一种高级数据处理语言,它提供了丰富的数据类型和操作符来对数据执行各种操作。

要执行特定任务使用Pig的程序员,程序员需要使用Pig Latin语言编写Pig脚本,并使用任何执行机制(Grunt Shell,UDF,Embedded)执行它们。执行后,这些脚本将经过Pig Framework应用的一系列转换,以产生所需的输出。

在内部,Apache Pig将这些脚本转换为一系列MapReduce作业,因此它使程序员的工作变得轻松。Apache Pig的体系结构如下所示。

Apache Pig架构

Apachepig组件

如图所示,Apache Pig框架中有各种组件。让我们看看主要组件。

分析器

最初,pig脚本是由解析器处理的。它检查脚本的语法,类型检查和其他杂项检查。解析器的输出将是一个DAG(有向无环图),它表示Pig Latin语句和逻辑运算符。

在DAG中,脚本的逻辑运算符表示为节点,数据流表示为边。

优化

逻辑计划(DAG)被传递给逻辑优化器,逻辑优化器执行逻辑优化,如投影和下推。

编译器

编译器将优化的逻辑计划编译为一系列MapReduce作业。

执行引擎

最后,MapReduce作业按排序顺序提交给Hadoop。最后,这些MapReduce作业在Hadoop上执行,产生所需的结果。

pig拉丁文数据模型

Pig Latin的数据模型是完全嵌套的,它允许复杂的非原子数据类型,如 映射元组 。下面给出的是Pig Latin数据模型的图解表示。

数据模型

原子

Pig Latin中的任何单个值,无论其数据如何,都称为 Atom 。它作为字符串存储,可用作字符串和数字。int,long,float,double,chararray和bytearray是Pig的原子值。一段数据或一个简单的原子值被称为 字段

示例 - 'raja'或'30'

元组

由一组有序的字段组成的记录称为元组,这些字段可以是任何类型。元组与RDBMS表中的行类似。

例子 - (Raja,30)

一个包是一组无序的元组。换句话说,元组(非唯一)的集合被称为包。每个元组可以有任意数量的字段(灵活的模式)。一个袋子用'{}'表示。它与RDBMS中的表类似,但与RDBMS中的表不同,每个元组不必包含相同数量的字段或相同位置(列)中的字段具有相同类型。

示例 - {(Raja,30),(Mohammad,45)}

一个包可以是一个关系中的领域; 在这方面,它被称为 内袋

示例 - {Raja,30, {9848022338,raja@gmail.com,} }

Map

Map(或数据Map)是一组键值对。在 关键 的需求是类型chararray的,应该是唯一的。该 可能是任何类型的。它由'['''

示例 - [姓名#Raja,年龄#30]

关系

关系是一袋元组。Pig Latin中的关系是无序的(不保证元组是按任何特定顺序处理的)。