使用PIG |计算平均值许多相同的条目

时间:2015-04-21 14:00:48

标签: hadoop apache-pig

我是PIG的新手,因此是绝对的初学者。

我有一个.txt文件,其条目如下所示:



Name         Matriculation Number Grade Name of Subject
John William 078932832            2.7   Research
John William 078932832            2.3   International Management
John William 078932832            1.7   Math




正如您所看到的,在文本文件中,有许多关于同一个人的条目,但不同的科目(当然)不同的等级。 我想计算每个学生的平均成绩。对于样本数据,我必须添加2.7,2.3和1.7并将其除以计数(三)。结果将是2.23。应该为列表中的每个学生制定此程序。最后,我想要一个包含以下内容的spearate .txt文件:



Name         Matriculation Number Overall Average Grade Number of Subjects
John William 078932832            2.23                  3




我怎样才能用PIG做到这一点?由于我是初学者,请提供获得结果所需的所有步骤。

谢谢!

1 个答案:

答案 0 :(得分:1)

可能需要使用语法,但类似于:

data_file= load 'yourText.txt' using PigStorage('    ') as (name:chararray,martNum:chararray,grade:float,nameSub:chararray);

groupData= GROUP data_file by (name,martNum);
result= FOREACH groupData GENERATE group, AVG(dat_file.grade),COUNT(data_file.nameSub);
Dump result;

这应该工作,注意AVG()是一个内置函数,但它在早期版本中非常错误,所以如果它抱怨尝试使用DataFu库中的Median()函数,其他工作将编写python UDF(你可以找到官方猪网站上的在线示例)