Spring Batch - 处理大量数据

Posted

技术标签:

【中文标题】Spring Batch - 处理大量数据【英文标题】:Spring Batch - Processing Large Amounts of Data 【发布时间】:2018-01-21 17:51:06 【问题描述】:

我正在寻找一种使用 Spring Batch 处理大量记录的策略。阅读器将一行作为输入,处理器可以生成一个大到无法放入内存的项目列表。流程本质上是: 读取 -> 生成 -> 写入

不确定是否可以采用某种嵌套批处理,可能是使用 tasklet,或者我是否持有 spring 批处理错误。

【问题讨论】:

您是否有理由不能以一种可行的方式在单独的步骤中预先生成列表?暂存表等? 我当时的想法是做一些类似读取请求的事情 -> 有一些提供者一次提供 500k 生成的行 -> 编写它们的编写器。问题是我该怎么做?我需要某种项目处理器,它可以持续不断地以块的形式向写入器返回数据,这样我就不会炸毁堆。 我会创建一个阅读器来进行生成。阅读器获取输入,然后将生成的内容块作为项目提供。该步骤的其余部分相应地工作。 嘿,迈克,这是个好主意。谢谢一百万。 【参考方案1】:

我会说您需要使用 Reader 状态实现自定义 Reader/Generator/Writer - 例如可分页,因此您生成“页面”列表而不是生成项目列表。每个页面都包含对文件中原始行的引用和页面信息[偏移量,页面大小]。

生成器依次将“源页面”转换为包含项目的相对较小的容器。

【讨论】:

以上是关于Spring Batch - 处理大量数据的主要内容,如果未能解决你的问题,请参考以下文章

Spring Batch 介绍

Spring Batch 简介

Spring batch 入门基础

大数据批处理框架 Spring Batch全面解析

Spring batch的学习

批处理大数据框架Spring Batch全面解析