2017-04-17 7 views
0

zählt Ich habe eine Tabelle mit dem Namen der Person und wohin geht er zum Einkaufen. Ich möchte die Anzahl der maximalen Vorkommen jedes einzelnen mit dem Namen des Supermarktes finden.Wie man Gruppenweise in Pig

Zum Beispiel in der unten stehenden Datei, wenn Alan zu Costco für die maximale Anzahl der Male zum Einkaufen geht, sollte die Ausgabe seinen Namen und den Namen des Ladens zusammen mit der Zählung haben, wie oft er dort ging. Ich muss diese Anzahl für alle Personen in der Datei unten finden.

Alan Costco 
Ryan Walmart 
Jim Costco 
Steve WholeFoods 
Ryan WholeFoods 
Jim Walmart 
Alan Costco 
Ryan Walmart 
Jim Costco 
Steve WholeFoods 
Ryan WholeFoods 
Jim Walmart 
Alan Costco 
Ryan Walmart 
Jim Costco 
Steve WholeFoods 
Ryan WholeFoods 
Jim Walmart 
Alan Costco 
Ryan Walmart 
Jim Costco 
Steve WholeFoods 
Ryan WholeFoods 
Jim Walmart 
Alan Costco 
Ryan Walmart 
Jim Costco 
Steve WholeFoods 
Ryan WholeFoods 
Jim Walmart 
Alan Walmart 
Jim WholeFoods 
Ryan Costco 
Steve Walmart 

Antwort

0
shopdata = LOAD 'path_of_filename' USING PigStorage(',') as (name:bytearray,mall:bytearray); 

groupdata = group shopdata by (name,mall); 

reqdata = foreach groupdata generate group.name as customer,group.mall as shopping_mall,COUNT(shopdata.mall); 

dump reqdata; 
0

Siehe hier zur Erklärung auf COUNT

A = LOAD 'file_path/test36.txt' USING PigStorage(' ') AS (a1 : chararray, a2 : chararray); 
B = GROUP A BY (a1,a2); 
C = FOREACH B GENERATE group,COUNT(A.a2) AS Total; 
DUMP C; 

enter image description here