使用 Apache Pig 处理数据6
2014-06-15 18:35
162 查看
Pig Latin 是一个相对简单的语言,它可以执行语句。一调语句 就是一个操作,它需要输入一些内容(比如代表一个元组集的包),并发出另一个包作为其输出。一个包 就是一个关系,与表类似,您可以在关系数据库中找到它(其中,元组代表行,并且每个元组都由字段组成)。
用 Pig Latin 编写的脚本往往遵循以下特定格式,从文件系统读取数据,对数据执行一系列操作(以一种或多种方式转换它),然后,将由此产生的关系写回文件系统。您可以在 清单 1 中看到该模式的最简单形式(一个转换)。
Pig 拥有大量的数据类型,不仅支持包、元组和映射等高级概念,还支持简单的数据类型,如
所有 Pig Latin 语句都需要对关系进行操作(并被称为关系运算符)。正如您在 清单 1 中看到的,有一个运算符用于从文件系统加载数据和将数据存储到文件系统中。有一种方式可以通过迭代关系的行来
表 1. [b]Pig Latin 关系运算符的不完整列表[/b]
虽然这不是一个详尽的 Pig Latin 运算符清单,但该表提供了一套在处理大型数据集时非常有用的操作。您可以通过 参考资料 了解完整的 Pig Latin 语言,因为 Pig 有一套不错的在线文档。现在尝试着手编写一些 Pig Latin 脚本,以了解这些运算符的实际工作情况。
用 Pig Latin 编写的脚本往往遵循以下特定格式,从文件系统读取数据,对数据执行一系列操作(以一种或多种方式转换它),然后,将由此产生的关系写回文件系统。您可以在 清单 1 中看到该模式的最简单形式(一个转换)。
Pig 拥有大量的数据类型,不仅支持包、元组和映射等高级概念,还支持简单的数据类型,如
int、
long、
float、
double、
chararray和
bytearray。如果使用简单的类型,您会发现,除了称为
bincond的条件运算符(其操作类似于
C ternary运算符)之外,还有其他许多算术运算符(比如
add、
subtract、
multiply、
divide和
module)。并且,如您所期望的那样,还有一套完整的比较运算符,包括使用正则表达式的丰富匹配模式。
所有 Pig Latin 语句都需要对关系进行操作(并被称为关系运算符)。正如您在 清单 1 中看到的,有一个运算符用于从文件系统加载数据和将数据存储到文件系统中。有一种方式可以通过迭代关系的行来
FILTER数据。此功能常用于从后续操作不再需要的关系中删除数据。另外,如果您需要对关系的列进行迭代,而不是对行进行迭代,您可以使用
FOREACH运算符。
FOREACH允许进行嵌套操作,如
FILTER和
ORDER,以便在迭代过程中转换数据。
ORDER运算符提供了基于一个或多个字段对关系进行排序的功能。
JOIN运算符基于公共字段执行两个或两个以上的关系的内部或外部联接。
SPLIT运算符提供了根据用户定义的表达式将一个关系拆分成两个或两个以上关系的功能。最后,
GROUP运算符根据某个表达式将数据分组成为一个或多个关系。表 1 提供了 Pig 中的部分关系运算符列表。
表 1. [b]Pig Latin 关系运算符的不完整列表[/b]
运算符 | 描述 |
---|---|
FILTER | 基于某个条件从关系中选择一组元组。 |
FOREACH | 对某个关系的元组进行迭代,生成一个数据转换。 |
GROUP | 将数据分组为一个或多个关系。 |
JOIN | 联接两个或两个以上的关系(内部或外部联接)。 |
LOAD | 从文件系统加载数据。 |
ORDER | 根据一个或多个字段对关系进行排序。 |
SPLIT | 将一个关系划分为两个或两个以上的关系。 |
STORE | 在文件系统中存储数据。 |
相关文章推荐
- 使用 Apache Pig 处理数据
- 使用 Apache Pig 处理数据
- 使用 Apache Pig 处理数据7
- 使用 Apache Pig 处理数据
- 使用 Apache Pig 处理数据5
- 使用Hibernate处理数据
- 使用Hibernate处理数据(Hibernate Your Data)(英语原文)
- 使用数据2分处理的通用分页存储过程 前半部分与后半部分数据访问时间相同
- 使用XMLBeans处理XML数据和文档入门
- SQL SERVER2000教程-第五章 处理数据 第二十一节 使用CASE语句、SUM函数、AVG函数进行综合数据统计
- AE中使用Geoprocessor 的clip处理输出矢量数据
- 跟我一起学Windows Workflow Foundation(3)-----使用If/Else活动,定制活动处理工作流,使用事件传递数据
- 使用Hibernate处理数据
- SQL SERVER2000教程-第五章 处理数据 第十七节 使用CASE函数格式进行条件查询
- SQL SERVER2000教程-第五章 处理数据 第十九节 使用DECLARE 语句进行数据统计
- SQL SERVER2000教程-第五章 处理数据 第七节 使用COMPUTE和COMPUTE BY对数据进行汇总
- SQL SERVER2000教程-第五章 处理数据 第十六节 使用CHARINDEX函数代替Like进行数据查询
- 使用用VB处理MYSQL数据库中二进制数据问题
- 跟我一起学Windows Workflow Foundation(3)-----使用If/Else活动,定制活动处理工作流,使用事件传递数据
- SQL SERVER2000教程-第五章 处理数据 第十五节 使用TRUNCATE TABLE快速删除表中的所有数据