溫馨提示×

Pig中怎么進(jìn)行數(shù)據(jù)聚合操作

Pig
小億
92
2024-03-16 15:09:38

在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é)果。

0