2012-05-29 17 views
8

Mam kolekcję krotek formularza (t, a, b), które chcę zgrupować w bw świni. Po zgrupowaniu chcę odfiltrować b z krotek w każdej grupie i wygenerować torbę filtrowanych krotek na grupę.Projekcja zgrupowanych krotek w świni

Jako przykład załóżmy, że mamy (1,2,1) (2,0,1) (3,4,2) (4,1,2) (5,2,3)

skrypt świnia wytwarzać {(1,2), (2,0)} {(3,4), (4,1)} {(5,2)}

Pytanie brzmi: jak mam zrobić ten wynik? Jestem przyzwyczajony do oglądania przykładów, w których operacje agregacji następują po grupie według operacji. Nie jest dla mnie jasne, jak filtrować krotki i zwracać je w torbie. Dziękuję za Twoją pomoc!

Odpowiedz

8

Okazuje się, że to, czego szukałem, to składnia projekcji zagnieżdżonej w Pig.

Jeśli ma się krotki formularza (t, a, b) i chce upuścić b po grupie, robi się to w ten sposób.

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

Zobacz sekcję "Projekcja zagnieżdżona" na stronie PigLatin. http://wiki.apache.org/pig/PigLatin