从FetchHDFS处理器获取文件总数

问题描述 投票:0回答:1

是一种从单次运行FetchHDFS处理器获取文件总数的方法?

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

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

在任何情况下,将此作为FetchHDFS或任何文件列表处理器的属性并不合乎逻辑。

更新#2(合并处理器)根据配置,合并处理器应该让文件每300秒一次。在我的用例中,总输入文件是2000,但它们进入缓慢的位置(大约200秒)。所以下面的配置应该足以合并所有文件。但它没有用。我仍然可以看到合并处理器让文件的间隔小得多。 enter image description here

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

enter image description here

apache-nifi kylo
1个回答
1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.