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

如何使用Spring批处理进行聚合?

微生弘
2023-03-14

我正试图弄清楚如何使用Spring Batch进行聚合。例如,我有一个带有姓名列表的CSV文件:

name
John
Amy
John
Ryan

我想要文本文件中的姓名计数:

name, count
Amy, 1
John, 2
Ryan, 1

根据我从Spring Batch中学到的,ETL批处理过程(itemReader-

Spring Batch是正确的工具吗?还是我应该用Spark?谢谢

共有1个答案

冯玮
2023-03-14

项目处理器通常用于过滤、验证或将数据从一种类型映射到另一种类型,但也可以用于任何类型的处理,如您的情况下的计数。例如,项目处理器可以保存名称的映射-

面向块的处理模型不会直接映射到map-减少模型。但是,分区才是您要找的。StepExecttionSplitterStepExecttionAggregator是在本地或远程执行map-减少操作的关键概念。有关此的更多详细信息,请参见参考留档的分区部分。

还有一个类似的问题,我在这里添加它以供参考:如何在Spring批处理作业中聚合完整的数据集?

希望这有帮助。

 类似资料:
  • 问题内容: 我想知道如何使用MyBatis 3和Spring 3通过我的插入语句实现批处理操作? 例如,这是当前正在执行的操作: spring.xml: MyService.xml: MyService.java: MyController.java: 免责声明:这只是用于演示目的的伪代码 那么我该怎么做才能将其变成批处理流程呢? 理想情况下,我希望能够以最少的“侵入”代码来做到这一点,即更优先使

  • 问题内容: 从文档 如果遇到需要插入1000 000行/对象的情况: 为什么我们应该使用这种方法?与StatelessSession一相比,它给我们带来了什么好处: 我的意思是,这个(“替代”)最后一个示例不使用内存,不需要进行同步,清除缓存,那么对于这样的情况,这应该是最佳实践吗?那么为什么要使用前一个呢? 问题答案: 从文档中,您链接到: 特别是,无状态会话不会实现第一级缓存,也不会与任何第二

  • 到目前为止,我正在运行spring批处理,只有一个作业。现在我想运行多个不同的作业,这意味着不同的功能。在我的配置文件中,我配置了两个具有不同id和不同名称的作业。现在我得负责这些工作。你能告诉我怎么跑吗。在这里,我的疑问是在我的java类中,我已经为运行批处理编写了这段代码。 对于其他作业,如何调用jobLauncher的run方法。 我的配置文件是

  • 当我使用Spring批处理管理运行长时间运行的批处理作业的多个实例时,它会在达到jobLauncher线程池任务执行程序池大小后阻止其他作业运行。但是从cron中提取多个工作似乎效果不错。下面是作业启动器配置。 Spring批处理管理员Restful API是否使用不同于xml配置中指定的作业启动器?

  • 我正在使用在每一行上执行一个函数,这需要很长时间,为了加快速度,有没有一种方法可以使用并行处理,使多个核心在不同的行上并发工作? 例如,我将PRISM天气数据(https://prism.oregonstate.edu/)聚合到州一级,同时按人口加权。这是基于https://www.patrickbaylis.com/blog/2021-08-15-pop-weighted-weather/. 请

  • 我有一个作业流,我希望以以下方式运行它: 作业流将从Job1开始。在Job1成功完成后,Job1将同时启动Job2和Job4。 Job2和Job4将并行运行。 在Job2成功完成后,Job2将启动Job3。 在Job4成功完成后,Job4将启动Job5。 下面是job1.xml和job1的作业启动器类的代码片段: job1.xml uijobLauncher.java “job2,Job3”对和“