MergeContent与nifi - 长度不一致

时间:2016-01-23 00:50:49

标签: apache-nifi

我试图用MergeContent处理器在磁盘上写一个文件,但是我的文件大小变化很大 - 从一行到806行。我已经多次重复这个过程,试图找出Apache NIFi MergeContent processor - set demarcator as new line中解决的新行标界符,并且我得到了非常随机大小的文件。

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

  1. 建立单个容器
  2. 将所有流量文件路由到bin
  3. 如果len(bin)> X或bin的年龄大于Max Bin Age,请释放bin
  4. 为了完整记录,我目前定义了以下属性: Merge Content Processor settings Merge Content Processor settings

    正如你所看到的,我按照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秒”(这是我唯一能找到这个值的例子的地方,文档在此参数上似乎不完整)

    我将“最大条目数”设置为5000,将“最大条目数”设置为1

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

2 个答案:

答案 0 :(得分:5)

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

根据您的具体逻辑,您可能希望让事情保持原样:

  • 将最小条目数设置为5000
  • (可选)增加最大条目数。将其保留为已配置将生成正好为5000个条目的区间,但年龄区间已被黯然失色的区域除外

下面是上面配置的图像,其中min和max bin大小都是5000,并且一次只处理1个bin。在这种情况下,您将看到正好将20000个文件合并为4个。

Sample execution for a min and max bin size of 5000

答案 1 :(得分:0)

如果有人遇到此确切问题,则原因可能不是在MergeContent处理器上设置了时间表。经过大量的故障排除后,我意识到这是“ 0秒”不合适的处理器之一。我已经将“最小条目数”和“最大条目数”设置了一些。 Max Bin Age设置为5分钟。正是时间表导致处理器不断抓取流文件并将其以随机大小捆绑在一起。