這裏是我的代碼,我做了兩組所有的操作和我的代碼作品。我的目的是根據總分數生成所有學生唯一用戶數,學生位於CA唯一用戶數。想知道是否有好的建議可以使我的代碼簡單地只使用一個組操作,或者任何有建設性的想法來簡化代碼,例如只使用一個FOREACH操作?謝謝。建議讓我的下面的豬代碼簡單
student_all = group student all;
student_all_summary = FOREACH student_all GENERATE COUNT_STAR(student) as uu_count, SUM(student.mathScore) as count1,SUM(student.verbScore) as count2;
student_CA = filter student by LID==1;
student_CA_all = group student_CA all;
student_CA_all_summary = FOREACH student_CA_all GENERATE COUNT_STAR(student_CA);
樣品輸入(學生證,位置ID,mathScore,verbScore),
1 1 10 20
2 1 20 30
3 1 30 40
4 2 30 50
5 2 30 50
6 3 30 50
樣本輸出(唯一的用戶,在CA獨特的用戶,所有學生的mathScore的總和,動詞得分的總和所有的學生),
7 3 150 240
由於事先的 林
我真的不知道豬所以不能給你一個確切的答案,但在概念上我想你想'GROUP BY學生(學生,LID)',向下彙總數據到一個更可管理的大小,但仍然保留你需要的粒度,那麼你的'FOREACH'聚合將會快得多 – maxymoo
@maxymoo,你指的是按位置分組(LID)而已?或通過地點+學生ID? –
這兩個組合,那麼你將有一個大小爲#locations * #students的表格。然後可以根據地點進行過濾或者將所有東西加起來以得到兩種類型的聚合 – maxymoo