- Apache Pig 教程
- Apache Pig - 主页
- Apache Pig介绍
- Apache Pig - 概述
- Apache Pig - 架构
- Apache Pig 环境
- Apache Pig - 安装
- Apache Pig - 执行
- Apache Pig - Grunt Shell
- 猪拉丁语
- 猪拉丁语 - 基础知识
- 加载和存储操作符
- Apache Pig - 读取数据
- Apache Pig - 存储数据
- Pig Latin 内置函数
- Apache Pig - 评估函数
- 加载和存储功能
- Apache Pig - 袋和元组函数
- Apache Pig - 字符串函数
- Apache Pig - 日期时间函数
- Apache Pig - 数学函数
- Apache Pig 有用资源
- Apache Pig - 快速指南
- Apache Pig - 有用的资源
- Apache Pig - 讨论
猪拉丁语 – 基础知识
Pig Latin 是用于使用 Apache Pig 分析 Hadoop 中的数据的语言。在本章中,我们将讨论 Pig Latin 的基础知识,例如 Pig Latin 语句、数据类型、通用和关系运算符以及 Pig Latin UDF。
Pig Latin – 数据模型
正如前面章节所讨论的,Pig 的数据模型是完全嵌套的。关系是 Pig Latin 数据模型的最外层结构。这是一个袋子-
- 包是元组的集合。
- 元组是一组有序的字段。
- 字段是一段数据。
猪拉丁语 – Statemets
使用 Pig Latin 处理数据时,语句是基本结构。
这些陈述与关系有关。它们包括表达式和模式。
每个语句都以分号 (;) 结尾。
我们将通过语句使用 Pig Latin 提供的运算符来执行各种操作。
除了 LOAD 和 STORE 之外,在执行所有其他操作时,Pig Latin 语句将一个关系作为输入并生成另一个关系作为输出。
一旦您在 Grunt shell 中输入Load语句,就会执行其语义检查。要查看架构的内容,您需要使用Dump运算符。只有执行完dump操作后,才会执行将数据加载到文件系统的MapReduce作业。
例子
下面给出的是一个 Pig Latin 语句,它将数据加载到 Apache Pig。
grunt> Student_data = LOAD 'student_data.txt' USING PigStorage(',')as ( id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray );
Pig Latin – 数据类型
下表描述了 Pig Latin 数据类型。
序列号 | 数据类型 | 描述和示例 |
---|---|---|
1 | 整数 | 表示有符号的 32 位整数。 示例:8 |
2 | 长的 | 表示有符号的 64 位整数。 示例:5L |
3 | 漂浮 | 表示有符号的 32 位浮点数。 示例:5.5F |
4 | 双倍的 | 表示 64 位浮点数。 示例:10.5 |
5 | 字符数组 | 表示 Unicode UTF-8 格式的字符数组(字符串)。 示例:“教程点” |
6 | 字节数组 | 表示字节数组 (blob)。 |
7 | 布尔值 | 代表一个布尔值。 示例:真/假。 |
8 | 约会时间 | 代表日期时间。 示例:1970-01-01T00:00:00.000+00:00 |
9 | 大整数 | 表示 Java BigInteger。 示例:60708090709 |
10 | 大十进制 | 表示 Java BigDecimal 示例:185.98376256272893883 |
复杂类型 | ||
11 | 元组 | 元组是一组有序的字段。 示例:(raja,30) |
12 | 包 | 包是元组的集合。 示例:{(raju,30),(Mohhammad,45)} |
13 | 地图 | Map 是一组键值对。 示例: [ '姓名'#'Raju', '年龄'#30] |
空值
上述所有数据类型的值都可以为 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 = (表达式) ? 如果为 true ,则为 value1 :如果为 false ,则为value2。 |
b = (a == 1)? 20:30; 如果 a = 1,则 b 的值为 20。 如果 a!=1,则 b 的值为 30。 |
案件 什么时候 然后 否则结束 |
Case - case 运算符相当于嵌套 bincond 运算符。 |
情况 f2 % 2 当 0 时则“偶数” 当 1 那么“奇数” 结尾 |
Pig Latin – 比较运算符
下表描述了 Pig Latin 的比较运算符。
操作员 | 描述 | 例子 |
---|---|---|
== | 等于- 检查两个操作数的值是否相等;如果是,则条件成立。 |
(a = b) 不正确 |
!= | 不等于- 检查两个操作数的值是否相等。如果值不相等,则条件成立。 |
(a != b) 为真。 |
> | 大于- 检查左操作数的值是否大于右操作数的值。如果是,则条件成立。 |
(a > b) 不正确。 |
< | 小于- 检查左操作数的值是否小于右操作数的值。如果是,则条件成立。 |
(a < b) 为真。 |
>= | 大于或等于- 检查左操作数的值是否大于或等于右操作数的值。如果是,则条件成立。 |
(a >= b) 不正确。 |
<= | 小于或等于- 检查左操作数的值是否小于或等于右操作数的值。如果是,则条件成立。 |
(a <= b) 为真。 |
火柴 | 模式匹配- 检查左侧的字符串是否与右侧的常量匹配。 |
f1 匹配 '.*tutorial.*' |
Pig Latin – 类型构造运算符
下表描述了 Pig Latin 的类型构造运算符。
操作员 | 描述 | 例子 |
---|---|---|
() | 元组构造函数运算符- 该运算符用于构造元组。 |
(拉朱,30 岁) |
{} | 包构造函数运算符- 该运算符用于构造一个包。 |
{(拉朱,30),(穆罕默德,45)} |
[] | 映射构造函数运算符- 该运算符用于构造元组。 |
[姓名#Raja,年龄#30] |
Pig Latin – 关系运算
下表描述了 Pig Latin 的关系运算符。
操作员 | 描述 |
---|---|
加载和存储 | |
加载 | 将文件系统(本地/HDFS)中的数据加载到关系中。 |
店铺 | 保存与文件系统(本地/HDFS)的关系。 |
过滤 | |
筛选 | 从关系中删除不需要的行。 |
清楚的 | 从关系中删除重复的行。 |
FOREACH,生成 | 基于数据列生成数据转换。 |
溪流 | 使用外部程序转换关系。 |
分组和加入 | |
加入 | 加入两个或多个关系。 |
集团 | 将数据分组为两个或多个关系。 |
团体 | 将数据分组到单个关系中。 |
叉 | 创建两个或多个关系的叉积。 |
排序 | |
命令 | 根据一个或多个字段(升序或降序)按排序顺序排列关系。 |
限制 | 从关系中获取有限数量的元组。 |
合并与拆分 | |
联盟 | 将两个或多个关系组合成一个关系。 |
分裂 | 将单个关系拆分为两个或多个关系。 |
诊断操作符 | |
倾倒 | 在控制台上打印关系的内容。 |
描述 | 描述关系的模式。 |
解释 | 查看计算关系的逻辑、物理或 MapReduce 执行计划。 |
阐明 | 查看一系列语句的逐步执行情况。 |