2017-01-13 1 views
2

Ist es mit Nifi möglich, eine JSON-Datei in eine strukturierte Tabelle zu laden?Möglichkeiten zum Strukturieren aufgenommener JSON-Daten mit Nifi

Ich habe die folgenden Wetterdaten (von 6000 Wetterstationen) aufgerufen, die ich gerade in HDFS lade. Alles erscheint in einer Zeile:

{"SiteRep":{"Wx":{"Param":[{"name":"F","units":"C","$":"Feels Like Temperature"},{"name":"G","units":"mph","$":"Wind Gust"},{"name":"H","units":"%","$":"Screen Relative Humidity"},{"name":"T","units":"C","$":"Temperature"},{"name":"V","units":"","$":"Visibility"},{"name":"D","units":"compass","$":"Wind Direction"},{"name":"S","units":"mph","$":"Wind Speed"},{"name":"U","units":"","$":"Max UV Index"},{"name":"W","units":"","$":"Weather Type"},{"name":"Pp","units":"%","$":"Precipitation Probability"}]},"DV":{"dataDate":"2017-01-12T22:00:00Z","type":"Forecast","Location":[{"i":"14","lat":"54.9375","lon":"-2.8092","name":"CARLISLE AIRPORT","country":"ENGLAND","continent":"EUROPE","elevation":"50.0","Period":{"type":"Day","value":"2017-01-13Z","Rep":{"D":"WNW","F":"-3","G":"25","H":"67","Pp":"0","S":"13","T":"2","V":"EX","W":"1","U":"1","$":"720"}}},{"i":"22","lat":"53.5797","lon":"-0.3472","name":"HUMBERSIDE AIRPORT","country":"ENGLAND","continent":"EUROPE","elevation":"24.0","Period":{"type":"Day","value":"2017-01-13Z","Rep":{"D":"NW","F":"-2","G":"43","H":"63","Pp":"3","S":"25","T":"4","V":"EX","W":"3","U":"1","$":"720"}}}, ..... 

Idealerweise möchte ich das Schema Strukturierung in einer 6000-Zeile-Tabelle.

Ich habe versucht, ein Schema zu schreiben, um die oben genannten in Pig zu übergeben, aber nicht erfolgreich gewesen, wahrscheinlich, weil ich nicht genug vertraut bin mit Json, um dies richtig zu übersetzen.

Casting für eine einfache Möglichkeit, um eine Struktur zu den Daten hinzuzufügen, habe ich festgestellt, dass es einen PutHBaseJson Prozessor in Nifi ist.

Kann jemand empfehlen, ob dieser PutHBaseJson Prozessor mit der oben genannten Datenstruktur arbeiten würde? Und wenn ja, kann mir jemand auf ein anständiges Tutorial hinweisen, um mir einen Ausgangspunkt für die Konfiguration zu geben?

Sehr zu schätzen jede Anleitung.

Antwort

3

Wahrscheinlich möchten Sie den Prozessor SplitJson verwenden, um die 6000-Datensatz-JSON-Struktur in 6000 einzelne Flowfiles aufzuteilen. Wenn Sie die Parameterdefinitionen aus der Antwort der obersten Ebene "injizieren" müssen, können Sie eine Operation ReplaceText oder JoltTransformJSON ausführen, um die einzelnen JSON-Datensätze zu bearbeiten. Hier ist eine good article von Yolanda Davis, die beschreibt, wie man Jolt-Transformationen (JSON -> JSON) in NiFi durchführt.

Sobald Sie die einzelnen Flowfiles mit einem einzelnen JSON-Datensatz haben, ist das Einfügen in HBase sehr einfach. Bryan Bende schrieb einen article describing the necessary configurations für den PutHBaseJson Prozessor.

+0

Vielen Dank @Andy für die Bereitstellung dieser Informationen - es scheint genau das zu sein, was ich benötige. Ich werde in den nächsten Tagen experimentieren und meine Ergebnisse veröffentlichen. – Jon295087

Verwandte Themen