Возможности структурирования данных JSON с использованием Nifi

Можно ли с помощью Nifi загрузить файл json в структурированную таблицу?

Я назвал следующие данные прогноза погоды (с 6000 метеостанций), которые сейчас загружаю в HDFS. Все это отображается в одной строке:

{"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"}}}, .....

В идеале я хочу структурировать схему в таблицу из 6000 строк.

Я пытался написать схему, чтобы передать вышеупомянутое в Pig, но не увенчался успехом, вероятно, потому что я не достаточно знаком с json, чтобы перевести это правильно.

Обращаясь к простому способу добавления некоторой структуры к данным, я заметил, что в Nifi есть процессор PutHBaseJson.

Кто-нибудь может посоветовать, будет ли этот процессор PutHBaseJson работать с вышеуказанной структурой данных? И если да, может ли кто-нибудь указать мне на достойный учебник, чтобы дать мне отправную точку в конфигурации?

Очень ценю любое руководство.

1 ответ

Решение

Вы, вероятно, хотите использовать SplitJson процессор для разделения структуры 6000 записей JSON на 6000 отдельных потоковых файлов. Если вам нужно "вставить" определения параметров из ответа верхнего уровня, вы можете сделать ReplaceText или же JoltTransformJSON операция для управления отдельными записями JSON. Вот хорошая статья Иоланды Дэвис, описывающая, как выполнять преобразования Джолта (JSON -> JSON) в NiFi.

Если у вас есть отдельные потоковые файлы, содержащие одну запись JSON, поместить их в HBase очень просто. Брайан Бенд написал статью, описывающую необходимые конфигурации для PutHBaseJson процессор.

Другие вопросы по тегам