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