如何聚合 Spring Batch 作业中的完整数据集?

Syl*_*inR 1 aggregate-functions spring-batch

我需要在 Spring Batch 作业中插入聚合。但是聚合步骤需要有整个数据集可用。

在纯 SQL 中,很容易编写 SQL 聚合请求:完整的数据集(存储在数据库中)可用。

但是在 Spring Batch 作业中,一切都在内存中完成,并以分块方式传播。那么如何处理那种散落的数据呢?

您对插入聚合步骤/流程的最佳实践有什么建议吗?

非常感谢您的启发

Nen*_*zic 7

您可以在 spring 批处理中有分区选项StepExecutionAggregator,它具有聚合方法,可以接受StepContext所有分区步骤的列表。

我们有 ie 与soap服务器的集成,我们首先收到需要处理的东西的列表,然后我们将它划分为子步骤并并行处理,并在每个子步骤完成后调用聚合器,它可以根据子步骤中的数据执行操作语境。

如果您的数据中有一些可以作为分区规则的好方法(即从数据库中提取项目列表并并行处理每个项目,将项目数据保存在步骤上下文中,使用聚合器并组合每个步骤上下文中的所有内容和对组合数据进行通用操作)。

这是分区示例的链接(没有聚合,但您可以将其添加到masterStep)。