2012-05-29 16 views
8

Ho una raccolta di tuple del modulo (t, a, b) che desidero raggruppare per b in Pig. Una volta raggruppato, voglio filtrare b dalle tuple di ciascun gruppo e generare un sacchetto di tuple filtrate per gruppo.Proiezione di tuple raggruppate nel maiale

Come esempio, supponiamo di avere (1,2,1) (2,0,1) (3,4,2) (4,1,2) (5,2,3)

Lo script di maiale produrrebbe {(1,2), (2,0)} { (3,4), (4,1)} { (5,2)}

La domanda è: come faccio a produrre questo risultato? Sono abituato a vedere esempi in cui le operazioni di aggregazione seguono un gruppo per operazione. Per me è meno chiaro come filtrare le tuple e riportarle in una borsa. Grazie per l'aiuto!

risposta

8

Ciò che stavo cercando è la sintassi per la proiezione nidificata in Pig.

Se si hanno tuple del modulo (t, a, b) e si desidera rilasciare b dopo il gruppo, viene eseguito in questo modo.

grouped = GROUP tups BY b; 
result = FOREACH grouped GENERATE tup.(t,a); 

Vedere la sezione "Nested Projection" nella pagina PigLatin. http://wiki.apache.org/pig/PigLatin