spring-batch - Spring batch - 将远程分区与远程分块相结合
问题描述
试图看看我是否可以设计一个既需要分区又需要远程分块的工作。我们可以让表 A 包含行(表 A 中的列之一将是分区键),对于表 A 中的每一行,我们将拥有表 B,其中包含表中给定外键/分区键的许多子记录一个 。我们需要运行一个查询,根据查询过滤表 A 中的分区键,并且对于每个分区键,处理表 B 中的所有子记录(这里我们在表 B 中将有几百万条记录,所以我们需要记录处理的并行性,因此远程分块)
对于这样的事情,思考春季批处理作业设计的正确方法是什么? 在此处输入图像描述
解决方案
所以我们需要并行性来处理记录并因此进行远程分块
不必要。没有什么可以阻止您在分区步骤的工作人员中使用远程分块,但是 IMO 这会使事情复杂化。
更简单的方法是使用多个作业。每个作业将使用多线程步骤并行处理不同的分区和处理项目。换句话说,分区键在这里是一个作业参数。这种方法具有以下优点:
更易于扩展:因为您在两个级别上具有并行性:
- 使用多个 JVM 并行运行多个作业(在同一台机器上或不同机器上)
- 在每个 JVM 中,使用多个线程并行处理项目。
更容易实现:远程分区和分块不是最容易配置的设置。运行多个作业,每个作业都读取
select * from TableA where partitionKey = ?
项目并使用多线程步骤(它需要一行代码,添加一个任务执行.taskExecutor(taskExecutor)
器)要容易得多。
推荐阅读
- delphi - 以编程方式更改快捷方式图标
- javascript - 锚点href vs 角度路由器链接
- javascript - 如何从 javascript 中的创建订阅 API 调用中检索 Stripe 订阅 ID
- python - Selenium:通过'option selected value'选择,默认时不存在
- docker - Docker compose 找不到本地包
- android - 将android生成的文件保存在运行模拟器的电脑上
- ios13 - iOS13不支持后台更新通知?
- php - PHP preg_match 正则表达式重定向网址
- vim - 为什么 UltiSnips 列出的可用片段不起作用?
- r - 在不同系列的线性模型中循环多个变量组合的问题