2012-05-29 38 views
8

Tôi có một tập hợp các bộ dữ liệu dạng (t, a, b) mà tôi muốn nhóm theo b trong Pig. Sau khi được nhóm lại, tôi muốn lọc ra b từ các bộ dữ liệu trong mỗi nhóm và tạo một nhóm các bộ lọc đã lọc cho mỗi nhóm.Chiếu các nhóm được nhóm trong Pig

Như một ví dụ, giả sử chúng ta có (1,2,1) (2,0,1) (3,4,2) (4,1,2) (5,2,3)

kịch bản lợn sẽ tạo ra {(1,2), (2,0)} {(3,4), (4,1)} {(5,2)}

Câu hỏi đặt ra là: làm thế nào để tôi đi về sản xuất kết quả này? Tôi thường thấy các ví dụ trong đó hoạt động tập hợp theo một nhóm bằng thao tác. Tôi hiểu rõ hơn về cách lọc các bộ dữ liệu và trả lại chúng trong túi. Cảm ơn vì sự hỗ trợ của bạn!

Trả lời

8

Hóa ra những gì tôi đang tìm kiếm là cú pháp cho phép chiếu lồng nhau trong Pig.

Nếu có một bộ dữ liệu có dạng (t, a, b) và muốn thả b sau nhóm theo, nó được thực hiện theo cách này.

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

Xem phần "Chiếu lồng nhau" trên trang PigLatin. http://wiki.apache.org/pig/PigLatin

Các vấn đề liên quan