Apache Pig架构

1. Apache Pig架构

为了编写Pig脚本,我们需要了解Pig Latin语言。并且,需要一个执行环境来执行它们。 因此,在本章中,我们将研究Apache Pig的完整体系结构。 它包括其组件,数据模型和Pig作业执行流程。

2.什么是Apache Pig体系结构?

在Pig中,我们使用一种语言来分析Hadoop中的数据。 这就是我们所说的Pig Latin。 而且,它是一种高级数据处理语言,提供了丰富的数据类型和操作符来对数据执行若干操作。

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

此外,Pig将这些脚本转换为内部的一系列MapReduce作业。 因此它使程序员的工作变得简单。 下图是Apache Pig的架构。

1542443309552819.png

Architecture of Apache Pig

3. Apache Pig 组件

Apache Pig框架中有几个组件。 我们来详细研究这些主要组件:

分析器 – Parser

所有的Pig脚本都由解析器处理。 解析器基本上检查脚本的语法,是否进行类型检查和其他语法检查等。 之后,Parser的输出将是一个DAG(有向无环图 directed acyclic graph),它代表Pig Latin语句以及逻辑运算符。

脚本的逻辑运算符表示为节点,数据流在DAG中表示为边(逻辑计划 logical plan)

优化 – Optimizer

逻辑计划(DAG)被传递给 Optimizer,它进一步进行逻辑优化,如projection和 push down。

编译器 – Compiler

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

执行引擎 – Execution Engine

所有MapReduce作业都按排序顺序提交给Hadoop。 最终,它在Hadoop上执行这些MapReduce作业并产生期望的结果。

4.Pig Latin数据模型

1542443465766988.png

Apache Pig architecture – Pig Latin Data Model

Pig Latin数据模型支持嵌套。 此外,它允许复杂的非原子数据类型,如Map和tuple元组。 下面来详细讨论这个数据模型:

Atom

Atom被定义为Pig Latin中的任何类型的单值 。 基本上,我们可以将它用作字符串和数字, 如int,long,float,double,char数组和字节数组。

例如 – 'Shubham'或'25'

Tuple 元组

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

例如 – (Shubham,25)

Bag

一组无序的元组就是我们所说的Bag。更具体地说,Bag是元组的集合(非唯一)。而且,每个元组可以有任意数量的字段(具有灵活的模式)。一般来说,我们用'{}'代表一个包。

例如 – {(Shubham,25),(Pulkit,35)}

另外,当一个Bag是一个内嵌在另一个Bag 中,就是 inter bag 。

示例 – {Shubham,25,{9826022258,Shubham@gmail.com,}}

Map

一组键值对就是我们所说的Map(或数据Map)。基本上,Key需要是char类型的数组,并且是唯一的。此外,值可能是任何类型。用'[]'来表示Map。

例如 – [名字#Shubham,25岁]

Relation

一组tuple组成的bag就是我们所说的关系。在Pig Latin中,这种关系是无序的。并且,不能保证元组以任何特定的顺序来处理。

Apache Pig架构

发表评论

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

3 × 二 =

滚动到顶部