首页 > 解决方案 > NiFi 如何将 3 条记录合并到一条记录中?

问题描述

我正在使用 NiFi,在同一个文件中接收多个 json。假装正确地修改了这些 json,我将其拆分为几个单独的流文件,这就是问题开始的地方。

对于每个 id 和 datetime,我想将 3 个流文件合并到一个流文件中。我尝试使用 MergeRecord NiFi 的处理器,但它可以在需要时使用。当我有一些记录时,它似乎工作正常。但是当我有“很多”记录时,例如超过 70 条记录,它就会中断。有时它将 2 条记录合并到一条记录中,有时它允许直接传递一条记录。

NiFi 的 MergeRecord 处理器

merge_key 是一个基于 id 和 datetime 的字符串属性。

我需要准确地获取 3 条记录并将它们合并为一条。

如果有一种方法可以订购流文件并每 5 秒获取它的前 n 个元素,我认为它会有所帮助。但我更愿意确保它在没有任何“帮助”的情况下正常工作......

标签: apache-nifi

解决方案


为了订购流文件,我们可以按照默认文档使用 EnforceOrder 处理器。

https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/1.5.0/org.apache.nifi.processors.standard.EnforceOrder/#:~: text=Order%20Attribute,will%20be%20routed%20to%20failure

NiFi还在传入流文件中使用以下优先级。

  • 先进先出优先级

  • 最新FlowFileFirstPrioritizer

  • OldestFlowFileFirstPrioritizer

  • PriorityAttributePrioritizer

有关更多详细信息,请参阅以下链接

https://nifi.apache.org/docs/nifi-docs/html/user-guide.html


推荐阅读