7

我正在尝试使用 MergeContent 处理器在磁盘上写入一个文件,但我得到的文件大小显着不同 - 从一行到 806 行不等。我已经多次重复这个过程,试图找出Apache NIFi MergeContent 处理器中解决的换行符分隔符 - 将分隔符设置为新行,我得到了非常随机大小的文件。

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

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

为了完整记录,我目前定义了以下属性: 合并内容处理器设置 合并内容处理器设置

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

我已将“最大条目数”设置为 5000,将“最大垃圾箱数”设置为 1

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

4

2 回答 2

7

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

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

  • 将最小条目数设置为 5000
  • 或者,增加最大条目数。将其保留为配置将生成正好是 5000 个条目的箱,除了那些年龄间隔已经黯然失色的时期

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

最小和最大 bin 大小为 5000 的示例执行

于 2016-01-23T01:38:46.530 回答
0

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

于 2019-08-07T04:34:06.830 回答