Как можно преобразовать CSV-файл в json БЕЗ использования процессоров avroSchema или ConvertRecord в Apache NIFi? - PullRequest
0 голосов
/ 11 июля 2019

Итак, я создал рабочий процесс в ApacheNifi, который извлекал вложения электронной почты и преобразовывал файлы csv в файлы json. Я использовал InferAvroSchema до ConvertRecord , чтобы преобразовать CSV в JSON. Все работает хорошо, пока я не получу CSV-файл, который не соответствует авросхеме, которую я написал. Теперь мне нужно найти способ конвертировать CSV в JSON без использования этих двух процессоров, так как форматирование CSV будет меняться время от времени. Формат CSV, с которым я сейчас работаю, я сошлюсь ниже.

Я попытался извлечь текст, но у меня возникли проблемы с написанием правильного регулярного выражения для извлечения значений, соответствующих их заголовкам. Я также попытался AttriutesToJson , но кажется, что он не читает нужные атрибуты. Я знаю, что могу указать, какие атрибуты использовать, но так как заголовки / значения будут постоянно меняться, я не могу найти способ динамически его настроить. Текущий формат CSV

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Если вы используете NiFi 1.9.2+, вы можете использовать CsvReader, который автоматически выводит схему для каждого потока.Поскольку JsonRecordSetWriter может также использовать встроенную логическую схему для записи JSON, вам больше не требуется предварительно заданная явная схема Avro.

Пока все строки CSV в одном потоковом файле следуют одной и той же схеме, у вас не будет никаких проблем.Если у вас могут быть разные схемы в одном и том же потоковом файле (что, я подозреваю, также вызовет много дополнительных проблем), вам придется сначала отфильтровать их в отдельные потоковые файлы.

0 голосов
/ 11 июля 2019

Вы пытались написать сценарий с использованием процессора executeStreamCommand?

И, более конкретно, вы говорите о разных заголовках?В процессорах ConvertRecord есть опции для включения заголовков

...