В NIFI как конвертировать из CSV в JSON без CSV-заголовка - PullRequest
1 голос
/ 12 мая 2019

В NIFI как конвертировать из CSV в JSON без CSV-заголовка.Для каждой CSV-строки searate json-файл потока должен быть создан и отправлен на следующий процессор.Ниже приведен csv

861359032561480,1,15.480237,190506144035,a
861359032561480,3,16.480237,190506144035,b
861359032561480,2,17.480237,190506144035,c

Ожидаемый JSON:

{"test":861359032561480,"test2":"1","test3":15.48,"test4":190506144035,"test5":A}

В приведенном выше втором JSON-значении JSON 1 является строкой, в третьем значении JSON значение ограничивается двумя цифрами последесятичное, в четвертом значении json в верхнем регистре.

Итак, как я могу преобразовать и применить эти преобразования?

1 Ответ

2 голосов
/ 12 мая 2019

Использование QueryRecord (для преобразования поля в верхний регистр) процессора, а затем Split the array of json записей.

  • Настройка Record Reader(CSVReader)/Writer(JsonRecordSetWriter).

  • В JsonSetWriter сохраните соответствующую avro-схему как long,string,decimal.

В обработчике QueryRecord добавьте новое свойство и сохраните инструкцию sql для преобразования "test5" в UPPER(test5) case, используя ApacheCalcite sql parser.

Ваш SQL-оператор будет выглядеть примерно так:

select test,test2,test3,test4,UPPER(test5)test5 from flowfile

Затем используйте SplitRecord (prefered if json file is big) (или) SplitJson для разделения массиваjson записывает в отдельные потоковые файлы.

Flow:

1.QueryRecord //to read csv and write in json format
2.SplitRecord (or) SplitJson //to Split array into individual flowfiles
3.other processors.
...