从 FetchHDFS 处理器获取文件总数

get total number of files from FetchHDFS processor

是否可以通过单个 运行 FetchHDFS 处理器获取文件总数?

我的用例是 ==> 从目录 (hdfs) 中读取所有文件,连接它们,然后进行进一步处理。但是要停止合并处理器(直到所有文件都在队列中),所以我需要文件数来设置 "Minimum Number of Entries".

我可以使用 wait/notify,但我仍然需要总计数,因此请正确设置标志。

无论如何,将其作为 FetchHDFS 或任何文件列表处理器的属性听起来不符合逻辑。

更新#2(合并处理器)根据配置,合并处理器应该让文件每 300 秒运行一次。在我的用例中,总输入文件为 2000,但它们的速度很慢(大约 200 秒)。所以下面的配置应该足以合并所有文件。但它不起作用。我仍然可以看到合并处理器让文件以更小的间隔运行。

更新 #3 == 所有 1600 个文件的总大小为 318 KB,远小于 bin 大小 128 MB

ListHDFS/FetchHDFS 不提供在特定 运行 中拾取的文件数。但是,您可以使用 ExecuteScriptUpdateAttribute 并在 Wait/Notify 的帮助下使其工作。

我建议的最简单的解决方案是,MergeContent 也有一个可选的 属性 称为 Max Bin Age,您可以在这里配置一些时间单位,例如 2 mins30 secs 并将 Minimum Number of Entries 设置为更高的数字。这样,无论队列大小与 Min. number of entries 中配置的数量不匹配,一旦为 Max bin age 配置的时间过去,这些排队的文件将被拾取并合并在一起。不过,这可能需要一些假设和实验才能完成正确的配置。