В NiFi, как хранить атрибуты, извлеченные из БД, которые меняются не очень часто? - PullRequest
0 голосов
/ 18 января 2019

У меня запланирован процессор ExecuteSQL, который извлекает ограничение скорости из БД. Это ограничение скорости не меняется часто, поэтому я создал интервал времени в 24 часа. Но я заметил, что следующий процессор, например RouteAttribute, не сохраняет это значение ограничения скорости. С каждым FlowFile, приходящим от Kafka, я хочу проверить, превышает ли значение speedlimit в FlowFile значение speedlimit, полученное из БД. Но значение из БД обрабатывается как FlowFile один раз в 24 часа и недоступно для сравнения.

У меня следующий поток: 1) ExecuteSQL-> ConvertAvroToJson-> EvaluateJsonPath-> отсюда я передаю значение ограничения скорости следующему потоку в процессор RoutesAttribute. 2) ConsumeKafka-> EvaluateJsonPath-> RouteAttributes (RouteAtrribute получает ограничение скорости сверху потока, но получает это значение только один раз в 24 часа. Как сохранить это значение в памяти постоянно ??)

1 Ответ

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

Исходя из вашего описания, я думаю, что эта статья HCC очень важна: https://community.hortonworks.com/questions/140060/nifi-how-to-load-a-value-in-memory-one-time-from-c.html

Таким образом, он использует тот факт, что UpdateAttribute имеет функцию состояния и обеспечивает обновление атрибута только при извлечении данных из справочной таблицы.


Существует также альтернативное решение, если для вас нормально перезапустить nifi после добавления обновленного эталонного значения, это называется реестром переменных, и это немного упрощает: https://docs.hortonworks.com/HDPDocuments/HDF3/HDF-3.1.1/bk_administration/content/custom_properties.html

...