我需要在Spring Batch作业中插入聚合。 但聚合步骤需要提供整个数据集。
在纯SQL中,编写SQL聚合请求很容易:完整的数据集(存储在数据库中)可用。
但是在Spring Batch工作中,一切都在内存中完成,并在分块中传播。 那么如何处理这种数据?
您对插入聚合步骤/流程的最佳做法有任何建议吗?
对你的启发很重要
答案 0 :(得分:4)
春季批次中有Partitioning个选项可以StepExecutionAggregator
,它有聚合方法,可以接受所有分区步骤的StepContext
列表。
我们与肥皂服务器集成,我们首先收到了需要处理的内容列表,而不是将它分区为子步骤并且并行处理,并且在每个子步骤完成后调用聚合器,可以根据数据执行操作在儿童步骤环境中。
如果您的数据中有一些可以作为分区的好规则(例如从DB中提取项目列表并并行处理每个项目,在步骤上下文中保存项目数据,使用聚合器并将每个项目中的所有内容组合在一起)步骤上下文并对组合数据执行常见操作。)
以下是link示例分区(没有聚合,但您可以将其添加到masterStep
)。