在过去的一天里,我一直在努力寻找一种解决方案,希望能听到您的想法。
我有一个接收大型动态JSON数组(仅包含字符串化对象)的管道,
我需要能够为该数组中的每个条目创建一个ContainerOp(使用dsl.ParallelFor)。
这对于少量输入来说效果很好。
现在,由于管道输入争论(由于Argo和Kubernetes的大小限制)(或者这是我从当前未解决的问题中了解的内容),该数组作为文件http url出现了,但是-当我尝试从一个Op读取文件以使用作为ParallelFor的输入,我遇到了输出大小限制。
在这种情况下,什么是好的且可重用的解决方案?
谢谢!
最佳答案
通常,首先将外部数据导入管道(下载并输出)。然后,组件使用inputPath
和outputPath
将大数据片段作为文件传递。
大小限制仅适用于您作为值使用的数据,而不适用于使用inputValue
的文件。
循环按值消耗数据,因此大小限制适用于它们。
您可以做的是减小此数据。例如,如果您的数据是大对象[{obj1}, {obj2}, ... , {objN}]
的JSON列表,则可以将其转换为索引表[1, 2, ... , N]
的列表,将该列表传递给循环,然后在循环内部可以有一个使用索引和数据的组件以选择一个单件工作于N
-> {objN}
。