2012-02-16 7 views
5

Dopo aver caricato e raggruppato i record, come posso archiviare i record raggruppati in più file, uno per gruppo (= userid)?Come archiviare i record raggruppati in più file con Pig?

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

che sto usando Apache Pig versione 0.8.1-cdh3u3 (rexported)

+0

Hmm sembra MultiStorage in salvadanaio potrebbe essere quello che sto cercando http://svn.apache.org/viewvc/pig/trunk/contrib/piggybank/ (?) java/src/main/java/org/apache/pig/piggybank/storage/MultiStorage.java? view = markup – thomers

risposta

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

Parametri:

  1. parentPathStr - Parent percorso di uscita dir
  2. splitFieldIndex - indice di campo chiave
  3. compressione - 'bz2', 'bz', 'gz' o 'none'
  4. fieldDel - Delimitatore di campo del record di output.

Riferimento: GrepCode

8

In effetti, c'è una classe MultiStorage a Piggybank che fa esattamente quello che voglio - si divide i record da un attributo specificato (in corrispondenza dell'indice '0' nel mio esempio):

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

Sai come fare lo stesso, ma invece di specificare un formato di compressione, voglio memorizzare i miei file in RC Formato? – Emtiaz

+0

Scusa Emtiaz, non lo so. – thomers

Problemi correlati