2017-11-17 9 views
0

私はHadoopのPIGへの新たなんだと私はこのようになりますデータセットがあります。私は、各地域のスコアの合計を計算したい地域別の結果をブタのラテンでグループ化するには?

region_id  region   participation score 

    1    SSA    YES   10 
    1    SSA    NO   22 
    2    MONTPELIER  YES   15 
    .... 

を。私が探している最終的な表示は、次のとおりです。
REGION - SCORE、例えば:

split_region = GROUP data by region; 
data = load '/user/cloudera/datapi/pigdata.csv' using PigStorage (',') AS 
(id:int, region:chararray, participation:chararray, score:int); 

は、次に地域別のデータをグループ化:私は私のデータをロードし
SSA - 32 

最後に:

RES= foreach split_region GENERATE SUM(data.score), data.region; 

RES変数は、各地域のスコアの合計が含まれていますが、それはそうのような地域のすべてのオカレンスを表示します。代わりに(32, SSA)を表示するには不足しているコマンド/命令は何

(32 , {SSA,SSA}) 

答えて

1

代わりdata.region

RES = foreach split_region GENERATE SUM(data.score), group; 

の使用groupは、ソースのhereを参照してください。 GROUP演算子を使用すると、 最初のフィールドの名前は "group"(これはGROUP演算子と混同しないでください)で、グループキーと同じ型です。

+0

ありがとうございました!あなたはグループの使用を説明していただけますか? – Hadh

0

グループ演算子は、類似のキーを持つすべてのレコードを同じバッグに持ち込むために使用されます。これは、列に対して集計を実行するのに役立ちます。

関連する問題