【问题标题】:How to do aggregation with Spring Batch?如何使用 Spring Batch 进行聚合?
【发布时间】:2019-04-21 08:17:09
【问题描述】:

我想弄清楚如何使用 Spring Batch 进行聚合。 例如,我有一个包含名称列表的 CSV 文件:

name
John
Amy
John
Ryan

我想在文本文件中计算姓名:

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

根据我从 Spring Batch 中学到的知识,ETL 批处理过程(itemReader -> ItemProcessor -> ItemWriter)更像是 map-reduce 术语中的映射阶段。如何在 Spring Batch 中进行 reduce(aggregation) 阶段?

Spring Batch 是正确的工具吗?或者我应该为此使用 Spark?谢谢。

【问题讨论】:

    标签: spring-batch


    【解决方案1】:

    ItemProcessor 通常用于过滤、验证或将数据从一种类型映射到另一种类型,但也可用于任何类型的处理,例如在您的情况下进行计数。对于您的示例,项目处理器可以保存name -> count 的映射并在名称通过管道时对其进行计数。

    面向块的处理模型不直接映射到 map-reduce 模型。但是,分区是您正在寻找的。 StepExecutionSplitterStepExecutionAggregator 是在本地或远程执行类似 map-reduce 的操作的关键概念。参考文档的Partitioning 部分对此有更多详细信息。

    有一个类似的问题,我在这里添加以供参考:Howto aggregate on full data set in Spring Batch jobs?

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      • 2013-02-17
      • 2017-04-23
      • 2018-10-28
      • 1970-01-01
      • 2020-08-12
      • 2018-04-21
      相关资源
      最近更新 更多