课程表

Apache Pig 基础

Apache Pig 诊断运算符

Apache Pig 分组和连接

Apache Pig 合并和拆分

Apache Pig 过滤

Apache Pig 排序

Pig Latin 内置函数

Apache Pig 其他执行模式

工具箱
速查手册

Pig Latin 基础

当前位置:免费教程 » 大数据/云 » Apache Pig

Pig Latin是用于使用Apache Pig分析Hadoop中数据的语言。在本章中,我们将讨论Pig Latin的基础知识,如Pig Latin语句,数据类型,通用运算符,关系运算符和Pig Latin UDF。

Pig Latin - 数据模型

如前面章节所讨论的,Pig的数据模型是完全嵌套的。Relation是Pig Latin数据模型的最外层结构。它是一个其中:

  • 包是元组的集合。
  • 元组是有序的字段集。
  • 字段是一段数据。

Pig Latin - 语句

在使用Pig Latin处理数据时,语句是基本结构。

  • 这些语句使用关系(relation),它们包括表达式(expression)模式(schema)

  • 每个语句以分号(;)结尾。

  • 我们将使用Pig Latin提供的运算符通过语句执行各种操作。

  • 除了LOAD和STORE,在执行所有其他操作时,Pig Latin语句采用关系作为输入,并产生另一个关系作为输出。

  • 只要在Grunt shell中输入 Load 语句,就会执行语义检查。要查看模式的内容,需要使用 Dump 运算符。只有在执行 dump 操作后,才会执行将数据加载到文件系统的MapReduce作业。

例子

下面给出一个Pig Latin语句,它将数据加载到Apache Pig中。

  1. grunt> Student_data = LOAD 'student_data.txt' USING PigStorage(',')as
  2. ( id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray );

Pig Latin - 数据类型

下面给出的表描述了Pig Latin数据类型。

序号数据类型说明&示例
1int

表示有符号的32位整数。

示例:8

2long

表示有符号的64位整数。

示例:5L

3float

表示有符号的32位浮点。

示例:5.5F

4double

表示64位浮点。

示例:10.5

5chararray

表示Unicode UTF-8格式的字符数组(字符串)。

示例:‘w3cschool’

6Bytearray

表示字节数组(blob)。

7Boolean

表示布尔值。

示例:true / false。

8Datetime

表示日期时间。

示例:1970-01-01T00:00:00.000 + 00:00

9Biginteger

表示Java BigInteger。

示例:60708090709

10Bigdecimal

表示Java BigDecimal

示例:185.98376256272893883

复杂类型
11Tuple

元组是有序的字段集。

示例:(raja,30)

12Bag

包是元组的集合。

示例:{(raju,30),(Mohhammad,45)}

13Map

地图是一组键值对。

示例:['name'#'Raju','age'#30]

Null值

所有上述数据类型的值可以为NULL。Apache Pig以与SQL类似的方式处理空值。null可以是未知值或不存在值,它用作可选值的占位符。这些空值可以自然出现或者可以是操作的结果。

Pig Latin - 算术运算符

下表描述了Pig Latin的算术运算符。假设a = 10和b = 20。

运算符描述示例
+

 - 运算符的两侧的值相加

a+b将得出30

 - 从运算符左边的数中减去右边的数

a-b将得出-10
*

 - 运算符两侧的值相乘

a*b将得出200
/

- 用运算符左边的数除右边的数

b / a将得出2
%

系数 - 用运算符右边的数除左边的数并返回余数

b%a将得出0
:

Bincond - 评估布尔运算符。它有三个操作数,如下所示。

变量 x =(expression)? value1 (如果为true): value2(如果为false)。

b =(a == 1)? 20:30;

如果a = 1,则b的值为20。

如果a!= 1,则b的值为30。

CASE

WHEN

THEN

ELSE

END

Case - case运算符等效于嵌套的bincond运算符。

CASE f2 % 2

WHEN  0

THEN

'even'


WHEN  1

THEN

'odd'

END

Pig Latin - 比较运算符

下表描述了Pig Latin的比较运算符。

运算符描述示例
==

等于 - 检查两个数的值是否相等;如果是,则条件变为true。

(a = b)不为true。
!=

不等于 - 检查两个数的值是否相等。如果值不相等,则条件为true。

(a!= b)为true。
>

大于 - 检查左边数的值是否大于右边数的值。 如果是,则条件变为true。

(a> b)不为true
<

小于 - 检查左边数的值是否小于右边数的值。 如果是,则条件变为true。

(a<b)为true。
>=

大于或等于 - 检查左边数的值是否大于或等于右边数的值。如果是,则条件变为true。

(a>=b)不为true。
<=

小于或等于 - 检查左边数的值是否小于或等于右边数的值。如果是,则条件变为true。

(a<=b)为true。
matches

模式匹配 - 检查左侧的字符串是否与右侧的常量匹配。

f1 matches '.* tutorial.*'

Pig Latin - 类型结构运算符

下表描述了Pig Latin的类型结构运算符。

运算符描述示例
()

元组构造函数运算符 - 此运算符用于构建元组。

(Raju,30)
{}

包构造函数运算符 - 此运算符用于构造包。

{(Raju,30),(Mohammad,45)}
[]

映射构造函数运算符 - 此运算符用于构造一个映射。

[name#Raja,age#30]

Pig Latin - 关系运算符

下表描述了Pig Latin的关系运算符。

运算符描述
加载和存储
LOAD将数据从文件系统(local/ HDFS)加载到关系中。
STORE将数据从文件系统(local/ HDFS)存储到关系中。
过滤
FILTER从关系中删除不需要的行。
DISTINCT从关系中删除重复行。
FOREACH,GENERATE基于数据列生成数据转换。
STREAM使用外部程序转换关系。
分组和连接
JOIN连接两个或多个关系。
COGROUP将数据分组为两个或多个关系。
GROUP在单个关系中对数据进行分组。
CROSS创建两个或多个关系的向量积。
排序
ORDER基于一个或多个字段(升序或降序)按排序排列关系。
LIMIT从关系中获取有限数量的元组。
合并和拆分
UNION将两个或多个关系合并为单个关系。
SPLIT将单个关系拆分为两个或多个关系。
诊断运算符
DUMP在控制台上打印关系的内容。
DESCRIBE描述关系的模式。
EXPLAIN查看逻辑,物理或MapReduce执行计划以计算关系。
ILLUSTRATE查看一系列语句的分步执行。
转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号