我以以下方式使用MergeContent来“分批”来自许多ExecuteSQL的传入响应。在MergeContent处理器中,我将“最小条目数”设置为1000,将“最大bin年龄”设置为30秒。然后,我有一个关联属性名称,用于对传入的FlowFiles进行装箱。这似乎按预期工作,但我的问题有两个:
答:这是明智的方法,还是有更好/更有效的方法来做到这一点?也许是ListFile / GetFile / MergeContent的组合,等等。
B.是否存在“最大数量”的最小条目数导致的性能/可伸缩性问题?
我的最终目标是尝试将ExecuteSQL命令产生的许多结果合并到单个文件中,并按其“相关属性名称”进行合并。
您的方法似乎很可靠。在SplitContent和MergeContent处理器的设计,以处理大量flowfiles的(记住,flowfile内容是不实际的系统在周围堆空间传递,而是存储在内容存储库和flowfile作为参考指针)。在许多情况下,我们已经看到用户“堆叠”这些处理器-即读取具有100万条记录的文件,初始SplitContent处理器将其拆分为每个包含10,000条记录的流文件,然后第二个将这些流文件拆分为单独的记录,而不是从一次操作即可达到一百万比一。这样可以提高性能并减少OutOfMemoryExceptions 的机会。
同样,您可能需要第二个MergeContent处理器将每个包含1,000个条目的流文件聚合到单个流文件中的更大集合中。该决定取决于您当前的吞吐量-30秒装箱和1,000个条目的组合是否使您始终拥有包含1,000个条目的流文件,或者它们只有几百个?您可以评估流文件的数据来源来确定这一点,并且可以设置并行流以本质上对A / B测试您的配置。
| 归档时间: |
|
| 查看次数: |
566 次 |
| 最近记录: |