Ich stieß auf ein Problem beim Laden eines Satzes JSON Dokumente in PIG. Was ich habe, ist eine Menge von Json Dokumente, die alle in den Bereichen variieren, die sie haben, die Felder, die ich brauche, sind in den meisten Dokumenten und in denen ich vermisse, möchte ich einen Nullwert erhalten.Laden von JSON mit variierendem Schema in PIG
Ich habe gerade die neueste Pig-Version heruntergeladen und kompiliert (0.12 direkt aus dem Apache-Git-Repository), nur um sicher zu gehen, dass dies noch nicht gelöst ist.
Was ich habe, ist ein json Dokument wie folgt aus:
{"foo":1,"bar":2,"baz":3}
Wenn ich dies in PIG laden diese mit
Json1 = LOAD 'test.json' USING JsonLoader('foo:int,bar:int,baz:int');
DESCRIBE Json1;
DUMP Json1;
ich die erwarteten Ergebnisse
Json1: {foo: int,bar: int,baz: int}
(1,2,3)
jedoch erhalten, wenn Die Felder sind im Schema in einer anderen Reihenfolge angeordnet:
ich ein unerwünschtes Ergebnis:
Json2: {baz: int,bar: int,foo: int}
(1,2,3)
Die
hätte sein sollen(3,2,1)
Anscheinend ist die Feldnamen in der Schema-Definition haben nichts mit den Feldnamen in der json zu tun.
Was ich brauche, ist das Laden bestimmter Felder aus einer JSON-Datei (mit eingebetteten Dokumenten!) In PIG.
Wie kann ich das beheben?
Leider lädt JsonLoader die Felder in der Reihenfolge, wie sie sind, unabhängig von dem Schema, das Sie festlegen. –