上一节:
下一节:

  Pig 体系结构



  • 架构

    使用Pig在Hadoop中分析数据的语言称为Pig Latin。它是一种高级数据处理语言,它提供了一组丰富的数据类型和运算符,以对数据执行各种操作。
    为了使用Pig执行特定任务,程序员需要使用Pig Latin语言编写Pig脚本,并使用任何执行机制(Grunt Shell,UDF,嵌入式)执行它们。执行后,这些脚本将经历Pig框架应用的一系列转换,以产生所需的输出。
    在内部,Apache Pig将这些脚本转换为一系列MapReduce作业,因此使程序员的工作变得容易。Apache Pig的体系结构如下所示。
    pig
  • Apache Pig组件

    如图所示,Apache Pig框架中包含各种组件。让我们看一下主要组成部分。
    解析器
    最初,Pig脚本由解析器处理。它检查脚本的语法,进行类型检查以及其他各种检查。解析器的输出将是DAG(有向无环图),它代表Pig Latin语句和逻辑运算符。
    在DAG中,脚本的逻辑运算符表示为节点,数据流表示为边。
    优化器
    逻辑计划(DAG)传递给逻辑优化器,该逻辑优化器执行逻辑优化,例如投影和下推。
    编译器
    编译器将优化的逻辑计划编译为一系列MapReduce作业。
    执行引擎
    最后,MapReduce作业以排序顺序提交给Hadoop。最后,这些MapReduce作业在Hadoop上执行,从而产生所需的结果。
  • Pig Latin 数据模型

    Pig Latin的数据模型是完全嵌套的,它允许使用复杂的非原子数据类型,例如map和tuple。下面给出的是Pig Latin数据模型的图形表示。
    pig
    原子
    不管它们的数据如何,Pig Latin中的任何单个值都称为Atom(原子)。它存储为字符串,可以用作字符串和数字。int,long,float,double,chararray和bytearray是Pig的原子值。一条数据或一个简单的原子值称为字段。
    示例-'raja'或'30'
    元组(tuple)
    由一组有序字段构成的记录称为元组,这些字段可以是任何类型。元组类似于RDBMS表中的行。
    例子-(Raja,30)
    包(bag)
    包是无序的元组集。换句话说,一组元组(非唯一)被称为包。每个元组可以具有任意数量的字段(灵活模式)。袋子用“{}”表示。它与RDBMS中的表相似,但是与RDBMS中的表不同,不必每个元组都包含相同数量的字段或相同位置(列)中的字段具有相同的类型。
    范例-{{Raja,30),(Mohammad,45)}
    bag 可以是关系中的一个字段;在这种情况下,它被称为内袋。
    范例-{Raja,30,{9848022338,raja@gmail.com,} }
    映射(map)
    映射(或数据映射)是一组键值对。在关键的需求是类型chararray的,应该是唯一的。该值可以是任何类型。用“[]”表示
    示例-[name#Raja,age#30]
    关系
    关系是一袋(bag)元组(tuple)。Pig Latin中的关系是无序的(不能保证元组以任何特定顺序进行处理)。
上一节:
下一节: