2013-11-24 7 views
5

Ich habe eine Datendatei und eine entsprechende Schemadatei an separaten Speicherorten gespeichert. Ich möchte die Daten mithilfe des Schemas in der Schemadatei laden. Ich versuchte mitPig: Laden einer Datendatei mithilfe einer externen Schemadatei

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

aber einen Fehler erhalten.

Wie lautet die Syntax zum korrekten Laden der Datei?

Das Schema-Dateiformat ist so etwas wie:

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

Antwort

6

Die Klausel AS ist das Schema nicht direkt den Pfad der Schemadatei zum Angeben.

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

Alternativ kann eine Datei .pig_schema enthält das Schema und die sie in Ihrem Eingang Verzeichnis mit dem Namen als auch funktionieren könnte. Habe das aber noch nie probiert. Es muss eine JSON-Datei mit der folgenden Syntax sein:

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

Diese Datei auch, wenn Sie die Option -schema angeben erzeugt wird, wenn mit PigStorage speichern.

7

Es ist möglich, Daten mit einer Schemadatei zu laden. Wenn Sie Ihre Daten mit dem Flag '-schema' im Ausgabepfad speichern, gibt es .pig-schema Datei, die JSON mit dem Schema enthalten.

Sie können es verwenden, wenn Daten

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

Laden Sie das Schema, indem Sie

describe A; 

prüfen this good post, um weitere Informationen zu sehen.

Diese Funktion ist ab Pig 0.10 verfügbar.

Verwandte Themen