2013-11-24 13 views
5

Ho un file di dati e un file di schema corrispondente memorizzato in posizioni separate. Vorrei caricare i dati usando lo schema nel file schema. Ho provato a utilizzarePig: caricamento di un file di dati utilizzando un file di schema esterno

A= LOAD '<file path>' USING PigStorage('\u0001') as '<schema-file path>' 

ma ottenere un errore.

Qual è la sintassi per caricare correttamente il file? formato di file

Lo schema è qualcosa di simile:

data1 - complex - - - - format - - 
data1 event_type - - - - - long - "ends '\001'" 
data1 event_id - - - - - varchar(50) - "ends '\001'" 
data1 name_format - - - - - varchar(10) - "ends newline" 

risposta

6

La clausola AS è per specificare lo schema direttamente non il percorso del file di schema.

A = LOAD '<file path>' USING PigStorage('\u0001') as 'type: long, id:chararray, nameformat:chararray'; 

In alternativa, un file chiamato .pig_schema contenente lo schema e si trova nella directory di input potrebbe funzionare pure. Non ci ho mai provato. Deve essere un file JSON con la seguente sintassi:

{"fields":[ 
     {"name":"type","type":55,"description":"Fu","schema":null}, 
     {"name":"id","type":15,"description":"Bar","schema":null}, 
     {"name":"nameFormat","type":55,"description":"Xu","schema":null}, 
    ] ,"version":0,"sortKeys":[],"sortKeyOrders":[]} 

Questo file viene generato anche se si specifica l'opzione -schema quando si ripone con PigStorage.

7

È possibile caricare i dati con il file di schema.

Quando si memorizzano i dati con il flag '-schema', nel percorso di output, c'è il file .pig-schema che contiene json con lo schema.

Si può usare per il caricamento dei dati

B = LOAD '<>' USING PigStorage(',','-schema'); 

Potete vedere lo schema eseguendo

describe A; 

Controllare this good post per maggiori dettagli.

Questa funzione è disponibile a partire da Pig 0.10.

Problemi correlati