Pig常用语法大全

Pig查询语言是基于Pig Latin,程序由一系列语句构成,操作和命令不区分大小写,别名和函数名区分大小写。下面,将介绍Pig Latin的常用语法。

1. 常用操作

  • 加载与存储
LOAD             
导入外部文件中的数据,存入关系
STORE
将一个关系存储到文件系统中
DUMP
将关系打印到控制台
  • 过滤
FILTER
按条件筛选关系中的行
DISTINCT 
去除关系中的重复行
FOREACH...GENERATE 
对于集合的每个元素,生成或删除字段
STREAM
使用外部程序对关系进行变换(例如,将Python程序嵌入到Pig中使用)
SAMPLE
从关系中随机取样
  • 分组与连接
JOIN
连接两个或多个关系
COGROUP
在两个或多个关系中分组
GROUP
在一个关系中对数据分组
CROSS 
获取两个或更多关系的乘积(叉乘)
  • 排序
ORDER
根据一个或多个字段对某个关系进行排序
LIMIT
限制关系的元组个数
  • 合并与分割
UNION
合并两个或多个关系
SPLIT
把某个关系切分成两个或多个关系
  • 诊断操作
DESCRIBE
打印关系的模式
EXPLAIN
打印逻辑和物理计划
ILLUSTRATE
使用生成的输入子集显示逻辑计划的试运行结果
  • UDF操作
REGISTER
Pig运行时环境中注册一个JAR文件
DEFINE
UDF、流式脚本或命令规范新建别名
  • Pig Latin命令操作
kill
中止某个MapReduce任务
exec
在一个新的Grunt shell程序中以批处理模式运行一个脚本
run
在当前Grunt外壳程序中运行程序
quit
退出解释器
set
设置Pig选项
  • Pig Latin表达式
类型
表达式
描述 
示例
字段
$n 
n个字段
$0
字段
d字段名d
year
投影
c.$n, c.f
c.f 在关系、包或元组中的字段
user.$0, user.year
Map查找
m#k
在映射m中键k对应的值
items'Coat'
类型转换
(t)f 
将字段t转换成f类型
(int)age
函数型平面化
fn(f1, f2, )
在字段上应用函数
fn isGood(quality)
函数型平面化
FLATTEN(f)
从包和元组中去除嵌套 
 flatten(group)

2. Pig Latin数据类型

数据类型:

  • int (32位有符号整数)
  • long(64位有符号整数)
  • float(32位浮点数)
  • double(64位浮点数)
  • chararray(UTF16格式的字符数组)
  • bytearray(字节数组)
  • tuple(元组) : tuple: (1, 'world')               //任何类型的字段序列
  • bag(包)  :  bag: {(1, 'world'), (2)}       //元组的无序多重集合(允许重复元组)
  •  map(键值对) : map: ['a' 'world']          //一组键值对,键必须是字符数组

3. 常用函数

计算函数:    
  • AVG : 所有值平均值
  • COUNT : 获取包中的元素数量
  • CONCAT:将两列合并为一列
  • COUNT_STAR:获取包中的元素数量。在计数元素时,COUNT_STAR() 函数包含NULL值
  • DIFF:比较元组中的两个包
  • MAX:计算单列包中的列(数值或字符)的最大值
  • MIN:计算单列包中的列(数值或字符)的最小值
  • SIZE:基于任何Pig数据类型计算元素的数量
  • SUM:获取单列包中列的总数值
  • TOKENIZE:用于在单个元组中分割字符串(其中包含一组字),并返回包含拆分操作输出的包
过滤函数:
  • IsEmpty:检查包或映射是否为空
加载/存储函数:
  • PigStorage:将数据加载并存储为结构化文本文件
  •  BinStorage:使用机器可读格式将数据加载并存储到Pig中
  • TextLoader:用于以UTF-8格式加载非结构化数据

 


 




  • 3
    点赞
  • 10
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

yz930618

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值