Подсчет количества файлов в каталоге с Nifi - PullRequest
0 голосов
/ 13 декабря 2018

Используя Apache Nifi, я передаю файлы в каталог.Я хочу подсчитать количество файлов в этом каталоге, подождать, пока все нужные мне файлы появятся, а затем запустить процессор StreamExecuteCommand для обработки данных в этом каталоге.(Прямо сейчас StreamExecute не ждет достаточно долго, чтобы все файлы пришли до начала процесса, поэтому я хочу добавить это ожидание)

Я просто хочу знать, как считать количество файловв каталоге, чтобы начать.Я использую ListFiles для получения имен файлов, но не знаю, как их считать в NiFi.

Спасибо

1 Ответ

0 голосов
/ 13 декабря 2018

Если вы используете ExecuteStreamCommand для запуска команды оболочки для файлов, вы можете легко добавить что-то вроде ls -l | wc -l к тому же или дополнительному ExecuteStreamCommand процессору для подсчета количества файлов в каталоге.

Однако мы обычно предостерегаем от такого подхода, поскольку существуют крайние случаи, когда в каталоге может присутствовать файл, который не является «завершенным», если его пишет какой-то внешний процесс.Обычно рекомендуемая модель - записывать файлы с временным именем файла, таким как .file1, .file2, и переименовывать каждый после успешного завершения в file1, file2 и т. Д. Процессор ListFileподдерживает множество настроек, чтобы избежать обнаружения этих файлов, пока они не будут готовы к обработке.

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

...