2013-11-24 22 views
5

Mam plik danych i odpowiedni plik schematu przechowywany w oddzielnych lokalizacjach. Chciałbym załadować dane przy użyciu schematu w pliku schematu. Spróbowałem użyćPig: ładowanie pliku danych przy użyciu zewnętrznego pliku schematu

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

, ale otrzymałem błąd.

Jaka jest składnia poprawnego wczytywania pliku? Format pliku

Schemat jest coś takiego:

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

Odpowiedz

6

klauzuli AS jest do określania schematu bezpośrednio nie ścieżkę do pliku schematu.

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

Alternatywnie, plik o nazwie .pig_schema zawierający schemat i znajduje się w katalogu wejściowego może pracować również. Nigdy jednak tego nie próbowałem. Musi to być plik JSON o następującej składni:

{"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":[]} 

Ten plik udostępniony jest również generowane, jeśli podasz opcję -schema podczas przechowywania z PigStorage.

7

Istnieje możliwość załadowania danych do pliku schematu.

Podczas przechowywania danych z flagą , w ścieżce wyjściowej znajduje się plik .pig-schema przechowujący json ze schematem.

Można go używać podczas ładowania danych

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

można zobaczyć schemat, uruchamiając

describe A; 

Sprawdź this good post więcej szczegółów.

Ta funkcja jest dostępna począwszy od Pig 0.10.

Powiązane problemy