当前位置: 首页 > 知识库问答 >
问题:

Spring批处理-结合远程分区和远程分块

秦育
2023-03-14

试着看看我是否能设计一个既需要分区又需要远程分块的工作。我们可以有类似于表A的东西来保存行(表A中的一列将是分区键),对于表A中的每一行,我们将有表B,其中包含表A中给定外部/分区键的许多子记录。我们需要运行一个查询,根据查询过滤表a中的分区键,并为每个分区键处理表B中的所有子记录(这里我们在表B中也会有数百万条记录,因此我们需要并行处理记录,从而实现远程分块)

对于这样的事情,什么是正确的思考spring batch作业设计的方法?在此处输入图像描述

共有1个答案

须新
2023-03-14

因此,我们需要并行处理记录,从而实现远程分块

不一定。没有什么能阻止您在分区步骤的工作人员中使用远程分块,但我认为这会使事情复杂化。

一种更简单的方法是使用多个作业。每个作业将处理不同的分区,并使用多线程步骤并行处理项目。换句话说,分区键在这里是一个作业参数。这种方法有以下优点:

>

  • 更容易扩展:因为您在两个级别上具有并行性:

    • 使用多个JVM并行运行多个作业(在同一台机器上或在不同的机器上)
    • 并且在每个JVM中,使用多个线程并行处理项目。

    更容易实现:远程分区和分块不是最容易配置的设置。运行多个作业,其中每个作业都从TableA中读取select*,其中分区键 = ? 项并使用多线程步骤(它需要一行代码,添加任务执行器. taskExecitor(taskExecitor))要容易得多。

  •  类似资料:
    • spring批处理远程分块和远程分区之间有什么区别? 我无法理解spring batch中远程分块和远程分区之间的区别。谁能解释一下吗?

    • 我们在POC中使用远程分区,处理大约2000万条记录。为了处理这些记录,slave需要一些大约5000行的静态元数据。我们当前的POC使用EhCache从数据库一次将元数据加载到从机中,并将其放入缓存中,这样子用户调用就可以从缓存中获取这些数据,从而获得更好的性能。 现在,由于我们使用远程分区,我们的从机大约有20个MDP/线程,因此每个消息侦听器首先调用以从数据库获取元数据,因此基本上每个远程机

    • 问题内容: Spring Batch远程分块和远程分区有什么区别? 我无法理解Spring Batch中的远程分块和远程分区之间的区别。有人可以解释一下吗? 问题答案: 远程分区 分区是主/从步骤配置,允许并行处理数据分区。每个分区都是通过一些元数据来描述的。例如,如果您正在处理数据库表,则分区1可能是ID 0-100,分区2可能是101-200,等等。对于Spring Batch,主步骤使用分区

    • 我开发了一个应用程序,我们必须从一个大表中处理500多万条记录。我们使用了spring批处理远程分区,它工作得很好。 我现在必须使用相同的作业,并对其进行调整,以便为多个表创建分区。每个分区都有表名和最小和最大记录,这样从机就知道必须从哪个表读取数据并准备文件。 我的问题是,这是可以做到的吗?如果可以,那么github上是否有任何样本。 非常感谢。

    • 目前,我们正在将批处理作业从java迁移到spring batch。此批处理作业从数据库和web服务获取其输入。我们需要在四台服务器上运行此作业,以提高性能,因为此作业正在处理大量数据。 上述场景是否可以通过spring batch中的远程分区实现? 我浏览了远程分区文档,但它很难理解,我没有找到任何关于远程分区的可靠示例。 请帮帮我。

    • 我在运行Spring批处理作业时遇到了一个技术问题。作业只是从DB(MongoDB)读取记录,对记录进行一些计算(聚合)并将记录结果写入另一个表。读取A、处理A、写入记录B B是A的许多记录的聚合。我想使用远程分块来垂直扩展我的系统,从而使处理部分缩放和快速。我面临的问题是,我需要同步A记录,以便在将结果写入B时处理它们不会发生冲突。如果我将10条A记录分发给4个从站,它们在将聚合结果写入B时会发