如何将一个大文件拆分成多个小文件,以便在 spring 批处理中并行处理?

how to split a large file into smaller files for parallel processing in spring batch?

我们有一个可以逻辑拆分的大文件(不是范围而是下一个头记录的出现)

例如

HeaderRecord1
...大量详细记录
HeaderRecord2
...大量详细记录
等等...

我们想在HeaderRecord层面把文件拆分成多个小文件,并行处理。

如何在 Spring 批处理中实现这一点?当我 google 时,我遇到了 Systemcommandtasklet 并使用 Linux / Unix Split 命令进行拆分。

这是最好的方法吗? Spring Batch 中是否有任何分区选项?

感谢和问候

您需要创建一个自定义 Partitioner 来计算每个逻辑分区的索引(begin/end 索引)。然后使用自定义项 reader(可以扩展 FlatFileItemReader),它只读取给定分区的行(并忽略其他行)。