Apache Pig – 架构
Apache Pig – 架构
用于使用 Pig 在 Hadoop 中分析数据的语言称为Pig Latin。它是一种高级数据处理语言,提供了丰富的数据类型和操作符来对数据进行各种操作。
要使用 Pig 执行特定任务,程序员需要使用 Pig Latin 语言编写 Pig 脚本,并使用任何执行机制(Grunt Shell、UDF、Embedded)执行它们。执行后,这些脚本将经过 Pig 框架应用的一系列转换,以生成所需的输出。
在内部,Apache Pig 将这些脚本转换为一系列 MapReduce 作业,从而使程序员的工作变得轻松。Apache Pig 的架构如下所示。
Apache Pig 组件
如图所示,Apache Pig 框架中有各种组件。让我们来看看主要组件。
解析器
最初,Pig 脚本由解析器处理。它检查脚本的语法、类型检查和其他杂项检查。解析器的输出将是一个 DAG(有向无环图),它代表 Pig Latin 语句和逻辑运算符。
在 DAG 中,脚本的逻辑运算符表示为节点,数据流表示为边。
优化器
逻辑计划(DAG)被传递给逻辑优化器,它执行诸如投影和下推等逻辑优化。
编译器
编译器将优化后的逻辑计划编译成一系列 MapReduce 作业。
执行引擎
最后,MapReduce 作业按排序顺序提交给 Hadoop。最后,这些 MapReduce 作业在 Hadoop 上执行,产生所需的结果。
猪拉丁数据模型
Pig Latin 的数据模型是完全嵌套的,它允许使用复杂的非原子数据类型,例如map和tuple。下面给出了 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, [email protected],} }
地图
映射(或数据映射)是一组键值对。在关键的需求是类型chararray的,应该是唯一的。该值可能是任何类型。它由'[]’表示
示例– [name#Raja, age#30]
关系
关系是一袋元组。Pig Latin 中的关系是无序的(不能保证以任何特定顺序处理元组)。