我想弄清楚如何使用 Spring Batch 进行聚合。例如,我有一个包含名称列表的 CSV 文件:
name
John
Amy
John
Ryan
Run Code Online (Sandbox Code Playgroud)
我想要文本文件中的名称计数:
name, count
Amy, 1
John, 2
Ryan, 1
Run Code Online (Sandbox Code Playgroud)
从我从 Spring Batch 学到的,ETL 批处理(itemReader -> ItemProcessor -> ItemWriter)更像是 map-reduce 术语中的映射阶段。如何在 Spring Batch 中执行缩减(聚合)阶段?
Spring Batch 是正确的工具吗?或者我应该为此使用 Spark?谢谢。
在ItemProcessor典型地用于过滤器,验证或地图数据从一种类型到另一种,但也可以用于任何类型的等你的情况计数处理的。对于您的示例,项目处理器可以在name -> count名称通过管道时保存名称的映射和计数。
面向块的处理模型不直接映射到 map-reduce 模型。但是,分区正是您要寻找的。该StepExecutionSplitter和StepExecutionAggregator是做这样的操作地图,减少本地或远程的关键概念。参考文档的分区部分中关于此的更多详细信息。
有一个与此类似的问题,我在这里添加以供参考:如何在 Spring Batch 作业中聚合完整数据集?
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
2469 次 |
| 最近记录: |