Hadoop的Pig 数据类型和语法

时间:2020-02-23 14:33:29  来源:igfitidea点击:

PIG的数据类型构成了Pig 如何考虑它正在处理的数据结构的数据模型。
使用Pig ,数据模型在加载数据时定义。
我们从磁盘加载到PIG的任何数据都将具有特定的架构和结构。
Pig 需要了解该结构,因此当我们进行加载时,数据会自动通过映射。

幸运的是,Pig 数据模型足够丰富,可以处理大多数抛出的东西,包括桌布结构和嵌套的分层数据结构。
但是,一般而言,Pig 数据类型可以分为两类:标量类型和复杂类型。
标量类型包含单个值,而复杂类型包含其他类型,例如下面列出的元组,袋子和地图类型。

Pig 拉丁语在其数据模型中有这四种类型:

  • 原子:原子是任何单个值,例如字符串或者数字 - 'diego'。例如,Pig 的原子值是标量类型,以大多数编程语言 - int,long,float,double,chararray和bytearray。

  • 元组:元组是由一系列字段组成的记录。例如,每个字段可以是任何类型的'迭戈','戈麦斯',或者6个)。想想一个桌子的一排。

  • 包:一个包是一系列非独特元组。袋子的架构是灵活的 - 集合中的每个元组可以包含任意数量的字段,每个字段都可以是任何类型的。

  • 地图:地图是键值对的集合。任何类型都可以存储在该值中,并且密钥需要是唯一的。映射的键必须是CharArray,并且该值可以是任何类型的。

该图还提供了元组,包和地图数据类型的一些精细示例。

所有这些类型的值也可以为null。
null的语义与SQL中使用的语义类似。
Pig 中零的概念意味着该值是未知的。
在数据不可读或者无法识别的情况下,空缺可以显示在数据中 - 例如,如果我们在加载语句中使用错误的数据类型。

null可以用作占位符,直到添加数据或者作为可选字段的值。

Pig 拉丁语具有简单的语法,具有强大的语义,我们将用于执行两个主要操作:访问和转换数据。

在Hadoop上下文中,访问数据意味着允许开发人员加载,存储和流数据,而转换数据意味着利用Pig 的组,加入,组合,分割,过滤器和排序数据的能力。
该表概述了与每个操作相关联的运算符。

|单价格不一间|

Pig 还提供了一些有助于调试和故障排除的少数运算符,如图所示:

|单价格不一间|

Hadoop的一部分范式偏移量是我们在读取而不是加载时应用架构。
根据旧方法 - RDBMS Way - 将数据加载到数据库系统中时,必须将其加载到明确定义的表组中。
Hadoop允许我们将所有原始数据提升存储并在读取时应用架构。

使用Pig ,在负载运算符的帮助下,我们在加载数据期间这样做。

可选的使用语句定义如何将文件中的数据结构映射到Pig 数据模型 - 在这种情况下,Pigstorage()数据结构解析分隔文本文件。
(此部分使用语句通常被称为负载FUNC,并以类似于自定义DESERIALIZER的方式工作。
)

可选的AS子句定义了映射数据的模式。
如果我们不使用AS子句,我们基本上讲述了默认的加载Func期望标签分隔的纯文本文件。
没有提供架构,必须通过位置引用字段,因为没有定义名称。

使用作为条文意味着我们在文本文件的读数中有一个模式,这允许用户快速启动并提供敏捷模式建模和灵活性,以便我们可以为分析添加更多数据。

负载运算符对懒惰评估的原理运行,也称为逐个呼叫。
现在懒惰听起来特别值得称道,但这意味着你延迟了表达式的评估,直到你真的需要它。

在PIG示例的上下文中,这意味着在执行加载语句之后,没有移动数据 - 没有任何内容,直到没有分流 - 直到遇到写入数据的语句。
我们可以拥有一个Pig 脚本,该Pig 脚本是长期填充复杂的转换,但在遇到转储或者存储语句之前,没有任何执行。