📅  最后修改于: 2020-12-02 05:29:29             🧑  作者: Mango
使用Pig在Hadoop中分析数据的语言称为Pig Latin 。它是一种高级数据处理语言,它提供了一组丰富的数据类型和运算符,可以对数据执行各种操作。
为了使用Pig执行特定任务,程序员需要使用Pig Latin语言编写Pig脚本,并使用任何执行机制(Grunt Shell,UDF,嵌入式)执行它们。执行后,这些脚本将经历Pig框架应用的一系列转换,以生成所需的输出。
在内部,Apache Pig将这些脚本转换为一系列MapReduce作业,因此使程序员的工作变得容易。 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,raja@gmail.com,} }
映射(或数据映射)是一组键值对。密钥必须是chararray类型,并且应该是唯一的。该值可以是任何类型。用“ []”表示
示例-[名称#Raja,年龄#30]
关系是一袋元组。 Pig Latin中的关系是无序的(不能保证元组以任何特定顺序进行处理)。