Нифи: отправить файл в HDFS;если не получится, подождите одну секунду, затем повторите попытку - PullRequest
0 голосов
/ 11 февраля 2019

В рамках процесса ETL в Nifi мне необходимо отправить некоторые файлы в HDFS.Что нужно, это проверить, есть ли сбой.Если это так, нужно подождать одну секунду, а затем повторить попытку.Если , что не удалось, он снова подождет секунду и повторите попытку.Наконец, в случае неудачи он отправит электронное письмо мне и другому администратору.Эта последняя часть достаточно проста, я просто отправляю ее на процессор PutEmail.Для повторных попыток я настроил его в соответствии с этой статьей: https://kisstechdocs.wordpress.com/2015/01/15/creating-a-limited-failure-loop-in-nifi/

Однако, он не будет ждать перед каждой повторной попыткой.Я думал о добавлении выражения, которое похоже на ${now():plus(1000)}, но оно ожидает логическое выражение.Может быть, есть способ выразить ту же идею в логическом виде?Или я должен буду отказаться от этого и найти другой подход?Заранее благодарим за любую помощь.

1 Ответ

0 голосов
/ 11 февраля 2019

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

Альтернативное решение - процессор сценариев, вы можете прочитать (настраиваемое) количество потоковых файлов одновременно, затем задержать одну секунду, а затем передать их все.

...