【发布时间】:2020-06-17 12:09:31
【问题描述】:
我很难理解 MergeRecord 处理器的工作原理。
我有一个流在 1 小时内生成大约 70 000 个流文件。我需要将所有这些流文件合并到一个唯一的流文件中。 流文件类似于 CSV,因此很简单。一次搞定有什么不容易的。
目前我有 2 个 MergeRecord 处理器一个接一个。
第一个配置如下:
- 最小/最大记录:1000/2000
- 最大 bin 年龄:60s
- 仓数:2
- 运行时间表:10 秒
最后配置如下:
- 最小/最大记录:70/2000
- 最大 bin 年龄:6000s
- 仓数:2
- 运行时间表:60 秒
每个传入队列都采用“单节点负载均衡”策略。
我的期望:
第一个MergeRecord,会根据:合并记录:
- 达到最低记录
- 如果垃圾箱已满
- 如果达到 bin 年龄
因此,我使用了大约 70 个合并的流文件。
第二个MergeRecord,会根据:
合并记录- 达到最低记录
- 如果垃圾箱已满
- 如果达到 bin 年龄
因此将我带到 1 个流文件。
我有什么:
我尝试使用处理器参数,但似乎该处理器“仅”由运行计划参数引导。如果我在流程结束时只有一个流程文件,我必须将其设置为高值。这样处理器只有在队列满时才会被触发。 问题是队列中的 70 000 个流文件经常导致我出现 OOM 错误或 Java 堆大小错误。
关于mergeRecord处理器的配置有什么提示吗?
谢谢,
PS:我在 3 节点集群上运行。
【问题讨论】:
标签: apache-nifi