Как ждать завершения запросов GenerateTableFetch - PullRequest
0 голосов
/ 15 сентября 2018

Мой вариант использования такой.У меня есть несколько X-таблиц, которые можно извлечь из MySQL.Я разделяю их, используя SplitText, чтобы поместить каждую таблицу в отдельный файл потока, и извлекаю, используя GenerateTableFetch и ExecuteSQL.

И я хочу получать уведомления или ставить какие-то другие действия после завершения импорта для всех таблиц.На SplitText текстовом процессоре я маршрутизировал original отношение к Wait на ${filename} с целевым числом ${fragment.count}.Это будет отслеживать, сколько таблиц сделано.

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

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

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

До тех пор, пока NiFi add не поддержит это, мне удалось заставить его работать, используя MergeContent. Используйте table_name в качестве Correlation attribute name, а затем используйте merged отношение к Wait процессору, используя ${merge.count} в качестве цели. См. Скриншоты, если кто-то хочет сделать то же самое.

enter image description here

MergeContent processor

Wait processor

0 голосов
/ 15 сентября 2018

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

Я написал NIFI-5601 , чтобы описать усовершенствование добавления атрибутов фрагмента. * В потоковые файлы, сгенерированные GTF.

...