Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2138062
  • 博文数量: 103
  • 博客积分: 206
  • 博客等级: 入伍新兵
  • 技术积分: 1819
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-12 10:24
个人简介

效字当先,以质为本。

文章分类
文章存档

2019年(2)

2018年(4)

2017年(7)

2016年(3)

2015年(14)

2014年(33)

2013年(31)

2012年(9)

分类: HADOOP

2014-11-08 00:27:17

要求:统计一个文件中某列的平均值;
文件如下:
[root@master zuoye]# cat a.txt 
a 1 2 3 4.2 9.8 
a 3 0 5 3.5 2.1 
a 7 9 9 2.6 6.2 
a 1 2 5 7.7 5.9 
a 1 2 3 1.4 0.2

按照第二、三、四列为分组,求第五、第六列平均值;
命令如下:
grunt> A = LOAD 'a.txt'using PigStorage(' ') as (a1, a2, a3,a4,a5,a6);
grunt> B = group A by (a2,a3,a4);
grunt> C = FOREACH B GENERATE group, AVG(A.a5),AVG(A.a6);  
grunt> DUMP C; 

结果:
((1,2,3),2.8,5.0)
((1,2,5),7.7,5.9)
((3,0,5),3.5,2.1)
((7,9,9),2.6,6.2)
解析:
第一步中先加载文件,并且以空格分割,分割完后列名分别为a1.....6,你可以起你好记的名字;
第二步按照a2,a3,a4分组;
第三步遍历B(foreach是遍历)的每一行,AVG是取平均值;
第四步输出,这个输出后默认路径;可以指定输出路径命令:grunt> STORE C INTO 'output';文件会保存在output次目录下;


阅读(3129) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~