2012-02-16 30 views
5

Sau khi tải và nhóm các bản ghi, làm cách nào tôi có thể lưu trữ các bản ghi được nhóm đó thành nhiều tệp, một tệp cho mỗi nhóm (= userid)?Làm cách nào để lưu trữ các bản ghi được nhóm thành nhiều tệp với Pig?

records = LOAD 'input' AS (userid:int, ...); 
grouped_records = GROUP records BY userid; 

Tôi đang sử dụng Apache Pig phiên bản 0.8.1-cdh3u3 (rexported)

+0

Hmm có vẻ như MultiStorage trong lợn tiết kiệm có thể là những gì tôi đang tìm kiếm http://svn.apache.org/viewvc/pig/trunk/contrib/piggybank/ (?) java/src/main/java/org/apache/pig/piggybank/lưu trữ/MultiStorage.java? view = markup – thomers

Trả lời

4
A = LOAD 'mydata' USING PigStorage() as (a, b, c); 
STORE A INTO '/my/home/output' USING MultiStorage('/my/home/output','0', 'bz2', '\\t'); 

Tham số:

  1. parentPathStr - Chánh đường dẫn đầu ra dir
  2. splitFieldIndex - lĩnh vực chỉ số chủ chốt
  3. nén - 'bz2', 'bz', 'gz' hoặc 'không'
  4. fieldDel - Dấu phân tách trường bản ghi đầu ra.

tham khảo: GrepCode

8

Trên thực tế, có một lớp MultiStorage tại Piggybank mà thực hiện chính xác những gì tôi muốn - nó chia tách các hồ sơ của một thuộc tính quy định (ít chỉ số '0' trong ví dụ của tôi):

STORE records INTO 'output' USING org.apache.pig.piggybank.storage.MultiStorage('output', '0', 'none', ','); 
+0

Bạn có biết cách thực hiện tương tự nhưng thay vì chỉ định định dạng nén, tôi muốn lưu trữ tệp của mình trong RC Định dạng? – Emtiaz

+0

Xin lỗi Emtiaz, tôi không biết. – thomers

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