为什么我们需要在 运行 猪的平均函数之前对关系进行分组

Why do we need to group a relation before running Average function in pig

请考虑这个猪脚本示例..

我有一个小数据集如下..叫做

student_details.txt

001,Rajiv,Reddy,21,9848022337,Hyderabad,89 002,siddarth,Battacharya,22,9848022338,Kolkata,78 003,Rajesh,Khanna,22,9848022339,Delhi,90 004,Preethi,Agarwal,21,9848022330,Pune,93 005,Trupthi,Mohanthy,23,9848022336,Bhuwaneshwar,75 006,Archana,Mishra,23,9848022335,Chennai,87 007,Komal,Nayak,24,9848022334,trivendram,83 008,Bharathi,Nambiayar,24,9848022333,Chennai,72

想法是计算学生的平均 GPA。

通过运行遵循以下命令得到解决方案

student_details = LOAD '/home/edureka/praveen/files/student_details.txt' USING PigStorage(',') as (id:int, firstname:chararray, lastname:chararray, age:int, phone:chararray, city:chararray, gpa:int);

student_group_all = Group student_details All;

student_gpa_avg = foreach student_group_all Generate (student_details.firstname, student_details.gpa), AVG(student_details.gpa);

我的问题是,为什么我需要将 ALL 分组以找到平均值.. 如果有一个简单的平均值函数,我可以直接在 student_details 上使用 运行。请帮忙,因为我的常识是折腾..可能是我用得太多了!!

如果你 google "Aggregate function" , 出现以下定义 -

在数据库管理中,聚合函数是一种函数,其中将多行的值组合在一起作为特定条件的输入,以形成具有更重要意义或度量的单个值,例如集合、a袋子或清单。常见的聚合函数包括:Average()(即算术平均值)Count().

希望这能让您稍微放松一下常识:)