在Pig中進(jìn)行數(shù)據(jù)聚合操作通常要使用GROUP BY語句來對數(shù)據(jù)進(jìn)行分組,然后再使用聚合函數(shù)來對每個(gè)分組進(jìn)行計(jì)算。以下是一個(gè)簡單的示例:
假設(shè)有一個(gè)包含學(xué)生信息的數(shù)據(jù)集,字段包括學(xué)生姓名、年齡和分?jǐn)?shù),數(shù)據(jù)如下:
Alice, 18, 80
Bob, 20, 85
Alice, 19, 90
Bob, 21, 88
要求計(jì)算每個(gè)學(xué)生的平均分?jǐn)?shù),可以使用如下Pig Latin語句:
data = LOAD 'student_data.txt' USING PigStorage(',') AS (name:chararray, age:int, score:int);
grouped_data = GROUP data BY name;
average_score = FOREACH grouped_data GENERATE group AS name, AVG(data.score) AS avg_score;
DUMP average_score;
執(zhí)行以上代碼后,會得到每個(gè)學(xué)生的平均分?jǐn)?shù):
(Alice, 85)
(Bob, 86.5)
在這個(gè)示例中,首先將數(shù)據(jù)按姓名進(jìn)行分組,然后計(jì)算每個(gè)分組中分?jǐn)?shù)的平均值,并輸出結(jié)果。