首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在春季批处理中池分区

如何在春季批处理中池分区
EN

Stack Overflow用户
提问于 2020-09-26 08:58:16
回答 1查看 171关注 0票数 1

要求:

必须处理多个文件并将其映射到entities

  • Collect,一批N个实体

  • 将其刷新到DB //瓶颈

目前的执行情况:

MultiResourcePartitioner读取多个文件,TaskExecutor使其多线程。

代码语言:javascript
复制
    Step s1 = sbf.get("file-db")
            .<Person, Person>chunk(1500)
            .reader(reader())
            .writer(jdbcWriter())
            .build();

    Step master = sbf.get("master-step")
            .listener(stepExecutionListener())
            .partitioner("master", partitioner())
            .step(s1)
            .taskExecutor(taskExecutor())
            .build();

问题是:

仅从每个线程中的单个文件中的条目持久化到数据库是效率低下的。在使用内置的春季批处理功能提交到DB之前,是否有可能将实体集中在某些数据接收器中?或者,实现这一目标的唯一方法是将实体推送到一个简单的队列中,然后从队列中读取?

EN

回答 1

Stack Overflow用户

发布于 2020-09-29 13:10:53

我发现的“解决办法”是实现一个与MultiResourcePartitioner类似的自定义MultiResourcePartitioner,并将文件名列表推送到ExectionContext

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64075719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档