【问题标题】:Predicate splitting and parallel processing谓词拆分和并行处理
【发布时间】:2021-03-15 08:39:13
【问题描述】:

我是 Spring Batch 的新手,我不知道如何为我的问题提出正确的解决方案。

我有一个包含一百万或两条记录的 CSV 文件。这些记录按 id 分组。

id;head-x;head-y;...
1;;;
1;;;
1;;;
...
1;;;
2;;;
2;;;
2;;;
...
2;;;
3;;;
3;;;
...
3;;;
...
...

我想要的是将此记录作为组处理。我阅读了所有 1 组记录流程并将它们转换为业务模型并将其保存到我的数据库中。

我需要并行执行这项工作以加快处理速度。如果可能的话,我想在 1 的同时处理 2 和 3。

我已经开始使用StepBuilderFactory#chunk() 但这给了我一个固定大小的块。我可以在一个块或一个不完整的块中获取多个组。

你有什么想法吗?

【问题讨论】:

    标签: java spring spring-batch


    【解决方案1】:

    由于您的记录已经按 Id 按顺序分组,您可以使用 SingleItemPeekableItemReader 按 Id 将多个物理记录读取到单个逻辑项中。完成后,您可以同步阅读器(使其成为线程安全的)并配置多线程步骤以并行处理项目。

    您还可以查看AggregateItemReader(它是示例的一部分)将多个物理记录聚合成一个逻辑记录:multi-line orders sample。在这里,多线程步骤也可以提高您的工作性能。

    【讨论】:

    • 示例链接是一个工作代码示例。这个答案缺少什么被接受?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多