Есть ли способ получить общее количество файлов от одного запуска процессора FetchHDFS?
мой вариант использования ==> читать все файлы из каталога (hdfs), объединять их и затем выполнять дальнейшую обработку. Но чтобы остановить процессор слияния (пока все файлы не будут в очереди), мне нужно количество файлов, чтобы установить «Минимальное количество записей».
Я могу использовать wait / notify, но тогда мне все еще нужно общее количество, поэтому установите флаги правильно.
В любом случае, не кажется логичным иметь это в качестве атрибута для FetchHDFS или какого-либо обработчика листинга файлов.
Обновление №2 (процессор слияния) Согласно конфигурации, процессор слияния должен пропускать файл каждые 300 секунд. В моем случае общее количество входных файлов составляет 2000, но они поступают медленно (около 200 секунд). Итак, приведенная ниже конфигурация должна быть достаточно хорошей, чтобы объединить все файлы. Но это не работает. Я все еще вижу, как процессор слияния позволяет файлам идти с гораздо меньшим интервалом.
Обновление # 3 == общий размер всех файлов 1600 составляет 318 КБ, что намного меньше, чем размер бункера 128 МБ
ListHDFS/FetchHDFS
не предоставляет количество файлов, взятых при конкретном запуске. Однако вы можете использовать ExecuteScript
или UpdateAttribute
и с помощью Wait/Notify
, и заставить его работать.
Самым простым решением, которое я предлагаю, является то, что MergeContent
также принимает одно необязательное свойство, называемое Max Bin Age
, вы можете настроить здесь некоторые единицы времени, такие как 2 mins
или 30 secs
, и установить для Minimum Number of Entries
более высокое число. Таким образом, независимо от того, что размер очереди не соответствует настроенному номеру в Min. number of entries
, по истечении времени, настроенного для Max bin age
, эти файлы из очереди будут взяты и объединены вместе. Однако это может потребовать некоторых предположений и экспериментов, чтобы получить правильную конфигурацию.
Это потому, что «Макс. Размер группы »настроен.
Когда вы настраиваете Min. Group Size
и Max. Group Size
, потоковые файлы, превышающие максимальный размер, будут обрабатываться в собственном бункере, поэтому вы видите меньшее количество файлов, объединенных вместе.
общий размер всех потоковых файлов (1600) составляет ~ 300 КБ. и размер корзины составляет 128 МБ, поэтому не уверен, почему процессор Merge позволяет меньшей группе уйти. Я ожидаю 1 слияние, у меня получается 178. см. Обновление №3 (в исходном сообщении).
У меня нет полных знаний о свойствах Min. Group Size
и Max. Group Size
. У меня был странный опыт их использования. В моих сценариях использования никогда не было необходимости настраивать эти свойства. Я бы посоветовал вам написать на [email protected]
для большей ясности.
наконец-то сработало. Остальные значения Minimum Number of Entries = 1
остались такими же, как на скриншоте в обновлении №3 (исходный пост). Спасибо за ваше предложение. Это помогло мне с проблемой, хотя получение количества файлов из listHDFS / File по-прежнему является далекой мечтой :(
Я настроил процессор слияния на более высокий предел, поэтому все файлы могут быть объединены (я обновил свой исходный вопрос). Это не работает.