Передать каталог в качестве аргумента в ExecuteStreamCommand - PullRequest
0 голосов
/ 22 января 2019

У меня есть Java-программа, которая предназначена для обработки каталога, полного данных, переданных в качестве аргумента JAR.

input_dir/
  file1
  file2

Как я могу сказать NiFi передать каталог в ExecuteStreamCommand, какаргумент вместо отдельного FlowFile?

Есть ли способ смоделировать каталог как FlowFile?

Я пытался использовать GetFile непосредственно перед ExecuteStreamCommand в input_dir родительском каталоге, чтобыполучить «nput_dir», чтобы передать его в потоковую команду.

Это не сработало, поскольку GetFile просто сканирует все каталоги в поисках реальных файлов, когда для атрибута «Recurse Subdirectories» установлено значение true.

Когда установлено значение false, GetFile не получает никаких файлов.

Подводя итог, я хотел бы найти способ передачи каталога, содержащего данные, в ExecuteStreamCommand, а не просто в один FlowFile.

Надеюсь, это имеет смысл, спасибо за ваши предложения.

1 Ответ

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

Поточный файл не обязательно должен быть файлом с диска, это может быть что угодно.Если я вас правильно понимаю, вам нужен файл потока для запуска вашей команды ExecuteStreamCommand.Вы должны быть в состоянии сделать это с GenerateFlowFile (установите стратегию планирования соответствующим образом).Вы можете поместить каталог непосредственно в ExecuteStreamCommand или, если вы хотите, чтобы он был более динамичным, вы можете добавить его в качестве атрибута файла потока в GenerateFlowFile, а затем ссылаться на него в ExecuteStreamCommand, например $ {my.dir} (при условии, что вы назвали его my.dirв GenerateFlowFile).

...