2016-11-14 2 views
2

Я использую Apache NiFi для копирования некоторых локальных файлов в HDFS. Я создал процессор GetFile, связанный с процессором PutHDFS. Процессор GetFile рекурсивно запрашивает каталог только для чтения. Проблема, с которой я сталкиваюсь, заключается в том, что файлы постоянно копируются, например, если я удаляю скопированные файлы на HDFS, они появятся вскоре после этого.Процессор GetFile постоянно работает в Apache NiFi

В конфигурации GetFile процессоров, я установил Keep Source File в правда, так как каталог только для чтения, и это указано в documentation, что только для чтения каталогов и если этот параметр установлен в ложных тогда файлы игнорируются:

Если true, файл не удаляется после того, как он был скопирован в Content Repository; это заставляет файл подбираться постоянно и полезен для целей тестирования. Если не хранить оригинальный NiFi, то необходимо написать разрешения в каталоге, из которого он вытаскивает, иначе будет игнорировать файл.

Можно ли просто скопировать каждый файл один раз?

ответ

4

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

+0

Спасибо, это сработало. Есть ли способ сбросить процессор, чтобы он забыл уже импортированные файлы? – cheseaux

+1

Да, остановите процессор ListFile, затем щелкните правой кнопкой мыши и выберите «Просмотр состояния». В диалоговом окне «Состояние» есть ссылка на «Очистить состояние». – mattyb

+0

Благодарим за помощь – cheseaux

Смежные вопросы