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

具有多个表的spring批处理远程分区

商皓
2023-03-14

我开发了一个应用程序,我们必须从一个大表中处理500多万条记录。我们使用了spring批处理远程分区,它工作得很好。

我现在必须使用相同的作业,并对其进行调整,以便为多个表创建分区。每个分区都有表名和最小和最大记录,这样从机就知道必须从哪个表读取数据并准备文件

我的问题是,这是可以做到的吗?如果可以,那么github上是否有任何样本。

非常感谢。

共有1个答案

洪逸清
2023-03-14

是的,这是可以做到的。您需要实现自己的Partitioner来处理为每个表/行范围创建ExecutionContext的逻辑。

以下是一些很好的资源:

  • 分区程序接口留档:http://docs.spring.io/spring-batch/apidocs/org/springframework/batch/core/partition/support/Partitioner.html
  • Spring Batch的缩放和并行处理章节第7.4节:http://docs.spring.io/spring-batch/trunk/reference/html/scalability.html
  • 我对Spring Batch视频的介绍涵盖了分区:https://www.youtube.com/watch?v=CYTj5YT7CZU和相关的Github存储库:https://github.com/mminella/Spring-Batch-Talk-2.0
 类似资料:
  • spring批处理远程分块和远程分区之间有什么区别? 我无法理解spring batch中远程分块和远程分区之间的区别。谁能解释一下吗?

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

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

  • 给定一个使用分区的Spring批处理作业,是否可能有多个分区步骤? 例如: 在上述示例中,是否可以将另一个添加到(最好不需要为每个分区步骤提供分区器)?如果没有,是否有其他方法来配置多个步骤,这些步骤将针对每个分区逐个执行?

  • 我有一个要求,我想在下面的场景中使用Spring批处理框架。 我有一个在交易日期列上分区的表。我想使用Spring批处理框架的阅读器、处理器和写入器来处理该表的记录。我想做的是根据交易日期创建单独的线程进行读取、写入和处理。假设有4个交易日期,那么我想为单独的交易日期创建4个单独的线程。在每个线程中,阅读器将从该交易日期的表中读取记录,在处理器中丰富记录,然后在写入器中发布/写入。 我是Sprin

  • 我必须在表中的一些配置数据库中爬行。其中每个记录指定要从中读取的模式。因此,我们必须对表格进行投票,并适当地运行作业。 考虑使用Spring批处理(JdbcPagingItemReader)从所有配置的模式中读取数据。如果我必须配置它,如何使用Spring批处理? 我应该使用不同的读取器为每个数据库读取多个作业,还是有什么方法可以在运行时发送数据源以供Spring Batch读取数据? 如何为单个