1、练习
首先编写两个数据文件A:
0,1,2
1,3,4
数据文件B:
0,5,2
1,7,8
上传到HDFS对应目录/input目录下
2、运行pig ,加载A和B
加载数据A:使用指定的分隔符,
grunt> a = load ‘/input/A‘ using PigStorage(‘,‘) as (a1:int, a2:int, a3:int);
加载数据B:
grunt> b = load ‘/input/B‘ using PigStorage(‘,‘) as (b1:int, b2:int, b3:int);
3、求a,b的并集
grunt> c = union a, b;
grunt> dump c;
(0,5,2)
(1,7,8)
(0,1,2)
(1,3,4)
4、
将c分割为d和e,其中d的第一列数据值为0,e的第一列的数据为1($0表示数据集的第一列):
grunt> split c into d if $0 == 0, e if $0 == 1;
查看d:
grunt> dump d;
(0,1,2)
(0,5,2)
查看e:
(1,3,4)
(1,7,8)
5、选择C中的一部分数据(第二列值大于3的记录)
grunt> f = filter c by $1 > 3;
查看数据f:
grunt> dump f;
(0,5,2)
(1,7,8)
6、对数据进行分组
grunt> g = group c by $2;
查看g:
grunt> dump g;
(2,{(0,1,2),(0,5,2)})
(4,{(1,3,4)})
(8,{(1,7,8)})
7、将所有的元素集合到一起
grunt> h = group c all;
grunt> dump h;
(all,{(0,1,2),(1,3,4),(0,5,2),(1,7,8)})
8、join操作
grunt> j = join a by $2, b by $2;
该操作类似于sql中的连表查询,这是的条件是$2 == $2。
取出c的第二列$1和$1 * $2,将这两列保存在k中
9、对列进行计算
grunt> k = foreach c generate $1, $1 * $2;
查看k的内容:
grunt> dump k;
(5,10)
(7,56)
(1,2)
(3,12)