MergeContent with nifi - 长度不一致

MergeContent with nifi - inconsistent length

我正在尝试使用 MergeContent 处理器在磁盘上写入一个文件,但我得到的文件大小变化很大——从一行到 806 行不等。我已经多次重复这个过程,试图找出 中提到的换行符,我得到了随机大小的文件。

我需要设置哪些参数才能遵循以下逻辑?

  1. 建立单一垃圾箱
  2. 将所有流文件路由到 bin
  3. 如果 len(bin)>X 或者 bin 的年龄大于 Max Bin Age,释放 bin

为了完整记录,我目前定义了以下属性:

如您所见,我已按照 https://github.com/apache/nifi/blob/31fba6b3332978ca2f6a1d693f6053d719fb9daa/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestMergeContent.java#L219 中的语法将 "Max Bin Age" 设置为“10 秒”(这是我设法找到该值示例的唯一地方,关于此参数的文档似乎不完整)

我已将 "Maximum Number of Entries" 设置为 5000,将 "Maximum number of Bins" 设置为 1

按照上述逻辑,我需要做什么来汇总我的记录?我还尝试使用 "Correlation Attribute Name" 参数,其属性保证在达到这一点的所有文档上都相同,并且看到了相同的

这里最重要的其实是最少的条目数。正在发生的事情是分箱算法在项目数量方面采取了宽松的方法。

对于您的特定逻辑,您可能希望保持现状并且:

  • 将最小条目数设置为 5000
  • 或者,增加最大条目数。保留它的配置将生成恰好 5000 个条目的 bin,除了年龄间隔已经消失的那些时期

下图是上述配置的图像,其中最小和最大 bin 大小均为 5000,并且一次仅处理 1 个 bin。在这种情况下,您会看到恰好 20000 个文件已合并为 4 个。

万一有人遇到这个确切的问题,原因可能是没有在 MergeContent 处理器上设置计划。经过大量故障排除后,我意识到这是其中一个处理器,其中“0 秒”不是一个合适的时间表。我已经将我的 Min Entries 设置为一些高数字和 Max Entries。 Max Bin Age 设置为 5 分钟。这是导致处理器不断抓取流文件并将它们捆绑成随机大小的时间表。