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

本文介绍PigLatin的基本语法结构,包括语句构成、注释方式、关系操作及数据类型等内容。涵盖加载与存储数据、过滤与分组、排序与合并等常见操作,并解释了诊断操作和用户自定义函数的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结构

一个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字段名fyear
投影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,否则为zquantity == 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
文本chararrayUTF-16格式字符数组‘a’
二进制Bytearray字节数组不支持
复杂类型tuple
bag
map
任何类型的字段序列
元组的无需多重集合
一组键-值对。键必须是字符数组,值可以是任何类型的数据
(1,’pomegranate’)
{(1,’pomegranate’),(2)}
{‘a’ ‘pomegranate’}

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

函数

Pig中函数有四种类型

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值