- Pig 教程
- Pig 体系结构
- Pig 安装
- Pig 执行
- Pig Grunt Shell
- Pig Latin 基础
- Pig 读取数据
- Pig 存储数据
- Pig Dump 运算符
- Pig Describe 运算符
- Pig Explain 运算符
- Pig illustrate 运算符
- Pig GROUP 运算符
- Pig Cogroup 运算符
- Pig JOIN 运算符
- Pig Cross 运算符
- Pig Union 运算符
- Pig SPLIT 运算符
- Pig FILTER 运算符
- Pig DISTINCT 运算符
- Pig FOREACH 运算符
- Pig ORDER BY 运算符
- Pig LIMIT 运算符
- Pig eval(求值) 函数
- Pig Load & Store 函数
- Pig Bag & Tuple 函数
- Pig 字符串(String)函数
- Pig 日期时间函数
- Pig 数学函数
Pig 体系结构
使用Pig在Hadoop中分析数据的语言称为Pig Latin。它是一种高级数据处理语言,它提供了一组丰富的数据类型和运算符,以对数据执行各种操作。
为了使用Pig执行特定任务,程序员需要使用Pig Latin语言编写Pig脚本,并使用任何执行机制(Grunt Shell,UDF,嵌入式)执行它们。执行后,这些脚本将经历Pig框架应用的一系列转换,以产生所需的输出。
在内部,Apache Pig将这些脚本转换为一系列MapReduce作业,因此使程序员的工作变得容易。Apache 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 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中的关系是无序的(不能保证元组以任何特定顺序进行处理)。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论