我有一个Argo工作流,它具有动态扇出任务,可以执行一些地图操作(在map Reduce的上下文中(。我想创建一个归约器来聚合它们的结果。当每个映射器的输出都很小并且可以作为输出参数时,就可以做到这一点。请参阅这个SO问答,了解如何做到这一点。
但是,如何使用Argo聚合输出工件,而不编写将它们写入每个映射器中的某个存储并在reducer中从中读取的自定义逻辑?
工件比参数更难聚合。
参数始终是文本,并且通常很小。这使得Argo工作流很容易将它们聚合为单个JSON对象;减少";步
另一方面,人工制品可以是任何类型或大小。因此,Argo工作流对聚合的帮助有限。
它提供的主要相关功能是声明性存储库写/读操作。例如,您可以指定一个S3前缀来写入每个参数。然后,在reduce步骤中,您可以从该前缀加载所有内容,并执行聚合逻辑。
Argo工作流提供了一个通用的映射/减少示例。但是,除了工件写入/读取之外,您几乎还必须自己完成聚合逻辑。