2017-11-17 9 views
0

Ich bin neu in Hadoop PIG und ich habe eine Datenmenge, die wie folgt aussieht:Wie gruppiere ich das Ergebnis nach Region mit Schwein Latein?

region_id  region   participation score 

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

Ich möchte für jede Region die Summe der Werte berechnen. Die letzte Anzeige, die ich suche ist:
REGION - SCORE, zum Beispiel:

SSA - 32 

ich meine Daten geladen:

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

dann die Daten gruppiert nach Region:

split_region = GROUP data by region; 

Endlich:

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

die RES Variable enthält die Summe der Punktzahl für jede Region, aber es wie so alle Vorkommen der Region anzuzeigen:

(32 , {SSA,SSA}) 

Was ist der fehlende Befehl/Anweisung zum Anzeigen (32, SSA) statt?

Antwort

1

Verwenden group statt data.region

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

Siehe here für Quelle. Wenn Sie den Operator GROUP verwenden, Das erste Feld heißt "Gruppe" (nicht mit dem Operator GROUP verwechseln) und ist der gleiche Typ wie der Gruppenschlüssel.

+0

Vielen Dank! Kannst du bitte die Verwendung der Gruppe erklären? – Hadh

0

Gruppenoperator wird verwendet, um alle Datensätze mit ähnlichen Schlüssel in die gleiche Tasche zu bringen. Dies hilft uns, Aggregationen in den Spalten durchzuführen.

Verwandte Themen