java predicate 分裂与并行处理

wfveoks0  于 2021-07-22  发布在  Java
关注(0)|答案(1)|浏览(314)

我是springbatch的新手,我不知道如何为我的问题找到正确的解决方案。
我有一个有一百万或两百万条记录的csv文件。这些记录按id分组。
身份证件;头部x;头部y;。。。
1;;;
1;;;
1;;;
...
1;;;
2;;;
2;;;
2;;;
...
2;;;
三;;;
三;;;
...
三;;;
...
...
我想要的是将这些记录作为一个组进行处理。我读取了所有1组记录流程,并将它们转换为业务模型,然后将其保存到我的数据库中。
我需要同时做这项工作以加快处理速度。如果可能的话,我想同时处理2和3。
我已经开始使用 StepBuilderFactory#chunk() 但这给了我一个固定大小的块。我可以在一个块或一个不完整的块中得到多个组。
你知道怎么做吗?

5ssjco0h

5ssjco0h1#

因为您的记录已经按id按顺序分组,所以可以使用singleitempeakeableitemreader将多个物理记录按id读入单个逻辑项。一旦这样做到位,您就可以同步读卡器(使其线程安全)并配置多线程步骤来并行处理项目。
您还可以查看aggregateitemreader(它是示例的一部分),以将多个物理记录聚合为一个逻辑记录:多行订单示例。这里的多线程步骤也可以提高工作的性能。

相关问题