2012-03-28 8 views

Trả lời

17

Bạn có thể làm điều này trong một vài cách sau:

  • Để thiết lập số lượng gia giảm cho tất cả opeations Pig, bạn có thể sử dụng default_parallel tài sản - nhưng điều này có nghĩa là mỗi bước duy nhất sẽ sử dụng một giảm duy nhất, giảm thông lượng:

    set default_parallel 1;

  • Trước khi gọi STORE, nếu một trong các hoạt động thực hiện là (COGROUP, CROSS, riêng biệt, GROUP, JOIN (bên trong), JOIN (bên ngoài), và ORDER BY), sau đó bạn c việc sử dụng các từ khóa PARALLEL 1 để biểu thị việc sử dụng các chất làm giảm duy nhất để hoàn thành lệnh rằng:

    GROUP a BY grp PARALLEL 1;

Xem Pig Cookbook - Parallel Features để biết thêm thông tin

+0

Tuyệt vời, Chris, cảm ơn! – JasonA

+0

Tôi không nghĩ điều này lý tưởng vì bạn có thể bị lỗi bộ nhớ với quá ít bộ giảm tốc trên dữ liệu đầu ra lớn. – FreeTymeKiyan

15

Bạn cũng có thể sử dụng lệnh getmerge Hadoop để hợp nhất tất cả những các tập tin part- *. Điều này chỉ có thể nếu bạn chạy tập lệnh Pig của bạn từ trình bao Pig (chứ không phải từ Java).

Đây là một lợi thế so với giải pháp được đề xuất: vì bạn vẫn có thể sử dụng một số bộ giảm tốc để xử lý dữ liệu của mình, vì vậy công việc của bạn có thể chạy nhanh hơn, đặc biệt nếu mỗi bộ giảm tốc xuất ít dữ liệu.

grunt> fs -getmerge <Pig output file> <local file>