NIFI конвертировать текстовый файл в JSON - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь загрузить текстовые файлы журнала с ftp-сервера вastic.

Файлы журнала выглядят так:

0:0:21: Processing events from events
0:0:21: Processing croned build types from q_type
0:0:21: Process croned releases from trls
0:0:22: Processing croned regression list from regression
0:0:22: Processing commit loop

в происхождении данных (шестнадцатеричное представление, потому что другие представления ничего не показывают), я вижу такие данные:

0x00000090  66  69  65  6C  64  3A  20  52  4E  20  53  74  61  74  75  73  field: RN Status
0x000000A0  2E  20  4F  62  6A  65  63  74  20  72  65  66  65  72  65  6E  . Object referen
0x000000B0  63  65  20  6E  6F  74  20  73  65  74  20  74  6F  20  61  6E  ce not set to an
0x000000C0  20  69  6E  73  74  61  6E  63  65  20  6F  66  20  61  6E  20  instance of an
0x000000D0  6F  62  6A  65  63  74  2E  0D  0A  30  3A  30  3A  31  34  3A  object...0:0:14:
0x000000E0  20  43  61  6E  27  74  20  72  65  61  64  20  69  73  73  75  Can't read issu
0x000000F0  65  3A  20  41  49  2D  32  34  37  20  63  75  73  74  6F  6D  e: AI-247 custom
0x00000100  20  66  69  65  6C  64  3A  20  52  4E  20  53  65  63  74  69  field: RN Secti
0x00000110  6F  6E  2E  20  4F  62  6A  65  63  74  20  72  65  66  65  72  on. Object refer
0x00000120  65  6E  63  65  20  6E  6F  74  20  73  65  74  20  74  6F  20  ence not set to
0x00000130  61  6E  20  69  6E  73  74  61  6E  63  65  20  6F  66  20  61  an instance of a
0x00000140  6E  20  6F  62  6A  65  63  74  2E  0D  0A  30  3A  30  3A  31  n object...0:0:1
0x00000150  34  3A  20  43  61  6E  27  74  20  72  65  61  64  20  69  73  4: Can't read is
0x00000160  73  75  65  3A  20  41  49  2D  32  34  37  20  63  75  73  74  sue: AI-247 cust
0x00000170  6F  6D  20  66  69  65  6C  64  3A  20  52  4E  20  44  6F  63  om field: RN Doc
0x00000180  20  69  6E  20  56  65  72  2E  20  4F  62  6A  65  63  74  20  in Ver. Object
0x00000190  72  65  66  65  72  65  6E  63  65  20  6E  6F  74  20  73  65  reference not se
0x000001A0  74  20  74  6F  20  61  6E  20  69  6E  73  74  61  6E  63  65  t to an instance
0x000001B0  20  6F  66  20  61  6E  20  6F  62  6A  65  63  74  2E  0D  0A  of an object...
0x000001C0  30  3A  30  3A  31  34  3A  20  43  61  6E  27  74  20  72  65  0:0:14: Can't re
0x000001D0  61  64  20  69  73  73  75  65  3A  20  41  49  2D  32  34  37  ad issue: AI-247

Я могу получить файл с процессором "getftp", но как мне преобразовать его в json, чтобы я мог отправить его в Elastic?

Я новичок в nifi, надеюсь, я не пропустил что-то простое, любая помощь будет оценена.

Спасибо

1 Ответ

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

Вы можете использовать процессор ConvertRecord с CSVReader для входа (настроить для использования : в качестве разделителя) и JsonRecordSetWriter для выхода.

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

...