Hiện tại, khi tôi STORE vào HDFS, nó tạo ra nhiều tệp phần.STORE đầu ra cho một CSV duy nhất?
Có cách nào để lưu trữ ra một tệp CSV không?
Hiện tại, khi tôi STORE vào HDFS, nó tạo ra nhiều tệp phần.STORE đầu ra cho một CSV duy nhất?
Có cách nào để lưu trữ ra một tệp CSV không?
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
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>
Tuyệt vời, Chris, cảm ơn! – JasonA
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