【问题标题】:MergeContent with nifi - inconsistent lengthMergeContent 与 nifi - 长度不一致
【发布时间】:2016-01-23 00:50:49
【问题描述】:

我正在尝试使用 MergeContent 处理器在磁盘上写入文件,但文件大小明显不同 - 从 1 行到 806 行不等。我已经多次重复这个过程,试图找出Apache NIFi MergeContent processor - set demarcator as new line 中提到的换行符,我得到了非常随机大小的文件。

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

  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/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestMergeContent.java#L219 中的语法将“Max Bin Age”设置为“10 sec”(这是我设法找到该值示例的唯一地方,文档似乎此参数不完整)

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

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

【问题讨论】:

    标签: apache-nifi


    【解决方案1】:

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

    对于您的特定逻辑,您可能希望顺其自然,并且:

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

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

    【讨论】:

    • 有趣的是,当我使用 GenerateFlowFile 构建测试流程时,我可以获得您所说明的行为,但是当我使用我的测试数据运行它时,我仍然得到一个非常随机的分布,这些应该有MINAILLS 541 99584639289804960498958688/70 output.json 33 6612 213507 1453404869690.output.json
    • 变化源于没有最小和最大等于并指定最大年龄。在我的示例中,没有最大年龄、1 个 bin 和 min=max=5000。 max bin age 的作用是避免处理器上的饥饿,以便配置避免输入被无限期地卡住等待其他内容到达。为此,始终存在变化的机会,具体取决于该处理器的输入 FlowFIles 的总量。为了更好地了解这些数据正在做什么,您能否提供一些关于您对它的期望的额外背景信息?谢谢!
    • 我已将处理器更改为最小 1000 和最大 1000,单个 bin,超时 30 秒 - 结果是,在大约 15 秒内,有 20 多个文件,例如 541、16 , 493, 16, 9, 和 33 行。我想知道它是否与某些相关策略或其他东西有关 - 大多数文件都以“1453404639289.output.json”方案命名(这是原始输入文件名的格式),但通常有一个或两个具有 .json 文件名的文件。
    • 很难重新创建。您介意就您的案件尽可能详细地提出问题吗? issues.apache.org/jira/browse/NIFI/… 如果可能的话,还包括您正在使用的流程模板作为额外探索的基础。谢谢!
    • 我已经提交了错误issues.apache.org/jira/browse/NIFI-1438。谢谢奥尔德林!暂时将此标记为答案 - 如果事实证明我在做一些愚蠢的事情,我会更新线程 - 如果它实际上也是一个错误,我会更新!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      相关资源
      最近更新 更多