NiFi: хранение содержимого файла в памяти или глобальных переменных - PullRequest
1 голос
/ 15 января 2020

У меня есть key value pairs в текстовом файле (sftp server), и я хотел бы, чтобы эти значения были сохранены где-то в memory или как global variables, чтобы я мог использовать его во всех моих ExecuteScript процессорах. Мне нравится более 20 ExecuteScript маршрутизируемых на основе различных типов данных, и мне нужно использовать эти key value pairs внутри этих процессоров. Я не могу сохранить эти значения как глобальные переменные NiFi, так как содержимое файла не одинаково для каждого запуска моего потока данных NiFi.

Я ожидаю, что когда мой поток NiFi запустится, это содержимое файла будет сохранено somewhere(memory/variables) чтобы я мог сослаться на это во всех моих сценариях.

Можно ли это сделать? Будем весьма благодарны за любые предложения или рекомендации.

1 Ответ

1 голос
/ 15 января 2020

Есть несколько способов сделать это. Например:

Реестр переменных

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

YAML / JSON файл конфигурации

Поместите свою конфигурацию в файл (так как вы уже есть). Используйте ExecuteScript для объединения пар ключ-значение в атрибуты.

Веб-сервис

Оберните файл конфигурации в веб-сервис и используйте InvokeHttp для запроса Это. Оцените ответ и объедините значения в атрибуты в FlowFile.

DistributedMapCache

Установите DistributedMapCacheServer и Client . Используйте PutDistributedMapCache для хранения значений и FetchDistributedMapCache с Put Cache Value In Attribute, установленным в true, для извлечения значений и помещения их в атрибуты.

Как настроить DistributedMapCache: { ссылка }

...