pig是hadoop客户端,使用类似于SQL的面向数据流的语言pig latin,这个语言可以完成排序,过滤,求和,关联等操作,可以支持自定义函数。Pig自动把pig latin 映射为Map-Reduce作业上传到集群运行,减少用户编写java程序的苦恼。
Pig是专门用于处理来自于HDFS的数据的。
Pig提供了一套流式的数据处理语言,转换为MapReduce,来处理HDFS中的数据。
*HBase是用来存储和查询数据
1、如何使用?
直接解压缩,执行bin/pig,就进入到grunt命令行
2、基础命令
2.1、load 加载HDFS进入Pig
a = load '/user.data'; #默认加载的是用制表符分隔的数据 # 访问列的时候,用$加上索引访问 dump a; b=load '/user.data2' using PigStorage(';'); #加载文件时指定分隔符 dump b; c = load '/user.data' using HBaseStorage; #可以加载HBase中的数据 dump c; d = load '/user.data' as (id,name); #指定字段名 dump d; e = load '/user.data' as (id:int,name:bytearray); #指定字段名和类型 dump e;
2.2、store...into...写入到HDFS中
store d into '/user.data3'; fs -text 'user.data3';
2.3、describe 显示关系结构
2.4、foreach...generate... 迭代每一行记录
f = foreach e generate id,name; dump f; g = foreach a generate $0; dump g; #或者 g = foreach a generate $0 as id; dump g;
2.6、filter...by... 过滤
h = filter f by id<2;
dump h;
2.7、group... by...分组
group h by uid;
2.8、order...by...
i = order h by uid desc;
2.9、distinct 去重
distinct h;
2.10、limit 限制记录数
l = limit h 50;
2.11、sample 取样
sample h 0.1; #抽取整体的10%的样本
2.12、join 合并
join user by id, role by uid;
2.13、parallel 并行
3、自定义函数
3.1、自定义过滤函数
继承自FilterFunc
3.2、自定义输入,输出函数