我是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做到这一点?由于我是初学者,请提供获得结果所需的所有步骤。
谢谢!
答案 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(你可以找到官方猪网站上的在线示例)