返回介绍

Pig 体系结构

发布于 2024-06-23 16:54:50 字数 1944 浏览 0 评论 0 收藏 0

使用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(原子)。它存储为字符串,可以用作字符串和数字。intlongfloatdoublechararraybytearray是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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文