首页 > 解决方案 > 当流从单个文件中读取时,如何在多台机器之间拆分 Spring Batch 的工作?

问题描述

我的流程是:

  1. 从单个文件中读取(文件大小~1TB)
  2. 处理每一行
  3. 将每一行写入 2 个输出文件

如何在多台机器之间拆分工作以减少整体运行时间?

标签: spring-batch

解决方案


此用例至少有三种技术:

  • 使用split命令(或等效命令)对文件进行物理分区以创建多个分区。然后使用分区步骤来处理每个分区。
  • 对文件进行逻辑分区(参见BATCH-1613FlatFilePartitioner中的附加示例)并使用分区步骤来处理每个分区
  • 使用临时表将文件加载到其中,然后使用分区步骤处理表上的分区(例如 ID 1 -> 1000、1001 -> 2000 等)

希望这可以帮助。


推荐阅读