2012-02-16 17 views
5

Después de cargar y agrupar registros, ¿cómo puedo almacenar esos registros agrupados en varios archivos, uno por grupo (= ID de usuario)?¿Cómo almacenar registros agrupados en varios archivos con Pig?

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

estoy usando Apache Pig versión 0.8.1-cdh3u3 (rexported)

+0

Hmm parece MultiStorage en Piggybank podría ser lo que yo estoy buscando http://svn.apache.org/viewvc/pig/trunk/contrib/piggybank/ (?) java/src/main/java/org/apache/pig/piggybank/storage/MultiStorage.java? view = markup – thomers

Respuesta

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

Parámetros:

  1. parentPathStr - Padres ruta dir salida
  2. splitFieldIndex - índice de campo clave
  3. compresión - 'bz2', 'BZ', 'GZ' o 'ninguna'
  4. fieldDel - Delimitador de campo de registro de salida

Referencia: GrepCode

8

De hecho, hay una clase MultiStorage en Piggybank que hace exactamente lo que quiero - que divide los registros por un atributo especificado (en el índice '0' en mi ejemplo):

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

¿Sabes cómo hacer lo mismo pero en lugar de especificar un formato de compresión, quiero almacenar mis archivos en RC ¿Formato? – Emtiaz

+0

Lo siento Emtiaz, no sé. – thomers

Cuestiones relacionadas