Nifi:使用MergeContent Processor一次性合并所有必要的流文件

Nifi:使用MergeContent Processor一次性合并所有必要的流文件,merge,apache-nifi,Merge,Apache Nifi,这是关于Nifi中MergeContent processor的问题。 目前,我需要以一次性方式将所有流文件与一个特定属性组合在一起 但是发生的事情是,因为有这么多具有相同属性的flowFile, 处理器生成几个与属性合并的不同流文件,这些文件应合并为一个大流文件 它们是否可以等待所有具有相同属性的流文件进入MergeContent处理器,并一次性合并所有流文件 如果没有,还有什么替代方案?您可以增加“最小条目数”和“最大条目数”,以适合您的用例,并将“最大仓位年龄”增加到适当的时间 您可以在此

这是关于Nifi中MergeContent processor的问题。 目前,我需要以一次性方式将所有流文件与一个特定属性组合在一起

但是发生的事情是,因为有这么多具有相同属性的flowFile, 处理器生成几个与属性合并的不同流文件,这些文件应合并为一个大流文件

它们是否可以等待所有具有相同属性的流文件进入MergeContent处理器,并一次性合并所有流文件

如果没有,还有什么替代方案?

您可以增加“最小条目数”和“最大条目数”,以适合您的用例,并将“最大仓位年龄”增加到适当的时间

您可以在此处引用合并内容的所有属性:

另外,您是在集群中使用nifi还是单独使用nifi?因为一个节点中的流文件不能与另一个节点中的流文件合并

例如,如果您使用具有5个节点的nifi集群,每个节点都有10个流文件。使用合并内容处理器后,您将有5个文件


如果您需要进一步帮助,请告诉我

在使用MergeContent Processor之前,您应该使用“单节点”的负载平衡策略配置连接器,以确保只有一个节点将处理碎片整理。

您有等待的文件计数吗?或者nifi应该等待具有相同属性的文件的任何其他限制?不,我没有文件数。根据输入文件的大小,它有时会有所不同。输入文件被一些标记(带有EvaluateXQuery)拆分为大量不同的流文件。因此,有多少具有相同属性值的小文件是未知的。或者我能知道吗?我在《独立》中使用它。但问题是,一个大型输入xml文件(嵌套也很深)到一个节点中,将被拆分为1000到1500个不同的flowfile(此处展开),以便每个flow文件都可以转换为csv。我在这里使用MergeContent来合并所有共享同一特定属性的小型csv流文件。所以,不幸的是,我不能设置最小条目数,因为条目数在不同的文件中是绝对不同的。在这种情况下,我认为增加最大仓位年龄可能会有所帮助。你可以增加到120秒。除此之外,您还可以将最小条目数设置为一个更高的数字,这样您就可以确保首先满足的条件将得到执行合并后,流文件将去哪里?如果是hdfs,我认为有一种解决方法,可以使用“update attribute”处理器重命名所有流文件,然后在PutHDFS处理器中,可以使用冲突解决策略作为“append”。这意味着具有相同名称的所有流文件将附加到HDFS中的相同文件中。(注:我对此不太确定,建议您测试一次,确保将页脚设置为空行,以避免数据附加到同一行)。好的,要求是Nifi管道需要在理想情况下将每个文件的xml转换为csv,时间为1秒,即使不确定是否可行。因此,我也无法将“最大垃圾箱年龄”设置为120秒。关于HDFS,由于新的csv表具有不同的列数,因此简单地追加可能不起作用。(可能需要实现自定义脚本以将新表合并到现有表)