我试图弄清楚如何使用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?谢谢。
在ItemProcessor
典型地用于过滤器,验证或地图数据从一种类型到另一种,但也可以用于任何类型的等你的情况计数处理的。对于您的示例,项目处理器可以name -> count
在管道中保存名称的映射并对其进行计数。
面向块的处理模型不会直接映射到map-reduce模型。但是,分区是您要寻找的。该StepExecutionSplitter
和StepExecutionAggregator
是做这样的操作地图,减少本地或远程的关键概念。有关更多详细信息,请参见参考文档的“分区”部分。
有一个与此类似的问题,我在这里添加以供参考:如何在Spring Batch作业中汇总全部数据集?
希望这可以帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句