这是从FetchHDFS处理器的单次运行中获取文件总数的一种方法吗?
我的用例是==>从目录(hdfs)中读取所有文件,并合并它们,然后进行进一步处理。但是要暂停合并处理器(直到所有文件都在队列中),因此我需要文件计数来设置“最小条目数”。
我可以使用wait / notify,但是我仍然需要总数,因此请正确设置标志。
无论如何,将其作为FetchHDFS或任何文件列表处理器的属性听起来不合逻辑。
Update#2(合并处理器)根据配置,合并处理器应每300秒释放一次文件。在我的用例中,输入文件总数为2000,但是输入速度很慢(大约200秒)。因此,下面的配置应该足以合并所有文件。但这是行不通的。我仍然可以看到合并处理器让文件间隔更短。
更新#3 ==所有1600个文件的总大小为318 KB,远远小于bin大小的128 MB
答案 0 :(得分:1)
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
配置的时间过去,这些排队的文件都将被拾取并合并在一起。不过,这可能需要一些假设和实验才能完成正确的配置。