java程序员的大数据之路(14):Pig Latin

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/K_Ohaha/article/details/78771807

结构

一个Pig Latin程序由一组语句构成,一个语句可以理解为一个操作,或一个命令。语句必须以分号结束。
Pig Latin有两种注释方法,双减号表示单行注释。多行注释可以使用/* 和 */表示。

语句

在Pig Latin程序执行时,每个命令按次序进行解析。如果遇到句法或语义错误,解释器会终止运行,并显示错误消息。解释器会给每个关系操作建立一个逻辑计划。逻辑计划是Pig Latin程序的核心。在逻辑计划构造完成前,Pig并不会处理数据。

Pig Latin关系操作

类型 操作 描述
加载与存储 LOAD
STORE
DUMP
将数据从文件系统或其他存储中加载数据,存入关系
将一个关系放到文件系统或其他存储中
将关系打印到控制台
过滤 FILTER
DISTINCT
FOREACH…GENERATE
STREAM
SAMPLE
从关系中删除不需要的行
从关系中删除重复的行
从关系中增加或删除字段
使用外部程序对关系进行变换
从关系中随机取样
分组与连接 JOIN
COGROUP
GROUP
CROSS
连接两个或多个关系
在两个或更多关系中对数据进行分组
在一个关系中对数据进行分组
获取两个或更多关系的乘积
排序 ORDER
LIMIT
根据一个或多个字段对某个关系进行排序
将关系的元组个数限定在一定数量内
合并与分割 UNION
SPLIT
合并两个或多个关系
把某个关系切分两个或多个关系

Pig Latin的诊断操作

操作 描述
DESCRIBE 打印关系的模式
EXPLAIN 打印逻辑和物理计划
ILLUSTRATE 使用生成的输入子集逻辑计划的试运行结果

Pig Latin UDF语句

语句 描述
REGISTER 在Pig运行时环境中注册一个JAR文件
DEFINE 为UDF,流式脚本或命令规范新建别名

表达式

Pig Latin表达式

类型 表达式 描述 示例
常数 文字 常量值 1.0,’a’
字段(通过位置指定) $n 第n个字段(以0为基数) $0
字段(通过名字指定) f 字段名f year
投影 c.$n,c.f 在容器c(关系、包或元组)中的字段 records.$0,records.year
Map查找 m#k 在映射m中键k所对应的值 items’Coat’
类型转换 (t)f 将字段f转换为类型t (int)year
算术 x+y,x-y
x*y,x/y
x%y
+x,-x
加法和减法
乘法和除法
取模运算,即x除以y后的余数
正和负
$1 + $2,$1 - $2
$2 * $2,$2 / $2
$2 % $2
+1,-1
条件 x?y:z 二值条件三元运算符,如果x为真,则y,否则为z quantity == 0?0:1
比较 x==y,x!=y
x > y,x < y
x>=y,x<=y
x matches y
x is null
x is not null
相等和不等
大于和小于
大于等于和小于等于
正则表达式匹配
是空值
不是空值
quantity == 0,temperature != 9999
quantity > 0, quantity < 10
quantity>=1,quantity<=9
quantity matches ‘[01459]’
temperature is null
temperature is not null
布尔型 x or y
x and y
not x
逻辑或
逻辑与
逻辑非
q == 0 or q == 1
q == 0 and q == 1
not q matches ‘[01459]’
函数型平面化 fn(f1,f2,…)
FLATTEN(f)
在f1,f2等字段上应用函数fn
从包和元组中去除嵌套
isGood(quantity)
FLATTEN(group)

类型

Pig Latin数据类型

类别 数据类型 描述 文字示例
数值 int
long
float
double
32位有符号整数
64位有符号整数
32位浮点数
64位浮点数
1
1L
1.0F
1.0
文本 chararray UTF-16格式字符数组 ‘a’
二进制 Bytearray 字节数组 不支持
复杂类型 tuple
bag
map
任何类型的字段序列
元组的无需多重集合
一组键-值对。键必须是字符数组,值可以是任何类型的数据
(1,’pomegranate’)
{(1,’pomegranate’),(2)}
{‘a’ ‘pomegranate’}

需要注意的是:不能根据包文字直接创建一个关系。也不能把元组的一个字段投影为一个关系。

函数

Pig中函数有四种类型

  • 计算函数
  • 过滤函数
  • 加载函数
  • 存储函数
    计算函数不需要过多解释,过滤函数是用于移出不需要的行。加载函数指明如何从外部存储加载数据到一个关系。存储函数指明如何把一个关系中的内容存到外部存储,如PigStorage。Pig内置函数可以在官网查询。
    如果没有需要的函数,也可以自己去写自定义函数。后面我们会详细介绍用户自定义函数。

猜你喜欢

转载自blog.csdn.net/K_Ohaha/article/details/78771807