pig概述
pig是一个用于并行计算的高级数据流语言和执行框架;
类sql、文件处理框架;
有一套和sql类似的执行语句,处理的对象是HDFS上文件。
Pig的数据处理语言是数据流方式的,一步一步的进行处理;
Pig基本数据类型:int、long、float、double、chararry、bytearray
复合数据类型:
Map([open#apache])、Tuple(类似于数组,(19,2))、Bag(Tuple的集合,{(19,2), (18,1)})
pig运行模式
pig运行模式有两种:本地式和分布式
pig -x local
pig 等价于 pig -x mapreduce
quit 退出
注意事项
load:加载hdfs上的文件,不支持加载本地文件,这点和hive的load不同;
pig load 既可以是目录也可以说文件。如果是文件的话,就是load该文件夹下所有的文件。
filter:过滤where
大小写敏感:表名、字段名、PigStorage, COUNT, SUM;其余的大小写是不敏感的
STORE:pig处理结果存储到HDFS系统上
DUMP :将pig处理结果展现在控制台上
空判断:
pig:id is not null
hive:not id is null 或者not id in (1,2,3)
d = foreach c generate aa::id as id, aa::name as name, b::score as score, aa::age as age;
d = foreach c generate aa::id as id, name as name, score as score, age as age;
如果a和b中都有id的话,a或者b是不能去掉的, 如果某个字段只有某个表中有,可能省略表名不写
使用场景
文件数据源有很多个列,但是有一些是没用的, 先经过pig过滤掉一些非法的数据放到HDFS文件中,然后再由hive去处理 。