Nifi ExecuteSQL извлекает запись в чанке - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь получить данные из mysql в пакетном режиме (just like cursor), используя процессор ExecuteSQL. Мои атрибуты ExecuteSQL:

Max Rows Per Flow File :  100
Output Batch Size : 10

Но процессор застревает, если он не выполняет и не получает все данные. Мне нужно смоделировать курсор как сценарий здесь.

Например, как только mysql отправляет некоторые данные, скажем, 100, он создает из них потоковый файл, а когда создается 10 таких потоковых файлов, процессор отправляет строку для обработки.

1 Ответ

0 голосов
/ 14 января 2019

Согласно NiFi-1251 Jira, начиная с NiFi-1.8

  • Процессор ExecuteSQL будет отправлять фрагменты потоковых файлов , т. Е. В вашем случае один раз first 100 rows будет извлечен из базы данных, затем Процессор ExecuteSQL процессор будет отправить файл потока для дальнейшей обработки.

В случае, если вы используете < NiFi-1.8 версию, нам нужно подождать, пока все строки будут выбраны из базы данных.

(или)

другой обходной путь будет

  1. Использование GenerateTableFetch Процессор для генерации страниц строк sql select query.

  2. Используйте ExecuteSql процессор для выполнения запроса sql страниц.

Расход:

1.GenerateTableFetch //partition size 10
2.ExecuteSQL
3.other processors

См. эту ссылку для более подробной информации о процессоре GenerateTableFetch.

...