2016-04-08 2 views
0

Summe der Anzahl der Doppel-und Dreiergruppen für jede Geburt/Geburtsland-Kombination. Gib die besten 5 birthCity/birthState-Kombinationen aus, die die Spieler hervorgebracht haben, die die meisten Doppel- und Dreiergruppen hatten.Pig Skript-Summe in einem Beutel

Zur Zeit habe ich diese

clean = FOREACH filtered_2 GENERATE id,city,state, dble + tripple AS combined; 
dump clean; 

Meine Frage ist, wie kann ich die oben passen? Es ist offensichtlich, dass ich nach (Stadt, Staat) gruppieren muss. wie ich in einer Summe Tasche bekommen, wenn ich Gruppe tun, indem

enter image description here

counter = foreach clean { 
    sum1 = SUM(combined); 
    generate id,city,state,sum1; 
}; 

Ich war so etwas wie dieses Denken aber, es funktioniert nicht

Antwort

1

Gruppe die Beziehung sauber von Stadt, Staat und dann Verwenden Sie die Summe, um die Summe der Gruppierung für jede Stadt zu erhalten.

clean = FOREACH filtered_2 GENERATE id,city,state,(dble + tripple) AS combined; 
clean_group = GROUP clean BY (city,state); 
counter = FOREACH clean_group GENERATE FLATTEN(group) as (city,state),SUM(clean.combined) as sum1; 
+0

können Sie die letzte Zeile erklären? Ich bin verwirrt, wie flatten in dieser speziellen Funktion funktioniert – dedpo

+0

Da die Gruppierung von 2 Feldern ist, ergibt die Gruppe von 2 Feldern ein Tupel. So extrahieren Sie die Felder aus Tupel müssen Sie FLATTEN verwenden –