使用Apache Nifi,我正在将文件传递到目录。我想计算该目录中的文件数,等到所有需要的文件都出现后,再运行StreamExecuteCommand处理器来处理该目录中的数据。 (现在,StreamExecute在进程开始之前没有等待足够长的时间来等待所有文件到达-因此我想添加此等待时间)
我只想知道如何计算目录中启动文件的数量。我正在使用ListFiles来检索文件的名称,但不确定如何在NiFi中对其进行计数。
谢谢
答案 0 :(得分:0)
如果您使用ExecuteStreamCommand
对文件运行shell命令,则可以轻松地将ls -l | wc -l
之类的东西添加到相同或附加的ExecuteStreamCommand
处理器中,以计算其中的文件数目录。
但是,我们通常会警告不要使用这种方法,因为在某些情况下,如果某些外部进程正在编写该文件,则在目录中可能存在一个“不完整”的文件。通常推荐的模型是使用诸如.file1
,.file2
之类的临时文件名写入文件,并在成功完成后将每个文件名重命名为file1
,file2
等。{{ 3}}处理器支持多种设置,以避免在准备好处理这些文件之前检测到这些文件。
我们通常还建议通过外部过程设置一些布尔标志,而不是等待显式计数,除非该值永远不会改变。