Dataflow 中的迭代处理
Iterative processing in Dataflow
如图所示here 数据流管道由固定的 DAG 表示。我想知道是否有可能实现一个管道,在该管道中,处理会继续进行,直到根据目前计算的数据满足动态评估的条件。
这里有一些伪代码来说明我想要实现的内容:
PCollection pco = null
while(true):
pco = pco.apply(someTransform())
if (conditionSatisfied(pco)):
break
pco.Write()
看来你真的想要迭代计算。目前 Dataflow 不为此提供支持,但我们知道这是一个非常重要的用例,我们正在努力寻找合适的 API 集来表达它。
目前您的解决方法是:
- 迭代 运行 整个管道(运行 管道,检查输出,如果不满足条件则再次 运行 等)。这具有管道设置和拆卸开销的明显缺点。
- 通过无条件地在循环中使用 .apply() 来构建具有硬编码迭代次数的管道,然后 运行 整个管道。
- 两者的结合,例如运行 修复了 5 次迭代管道,直到您对结果满意为止。
如图所示here 数据流管道由固定的 DAG 表示。我想知道是否有可能实现一个管道,在该管道中,处理会继续进行,直到根据目前计算的数据满足动态评估的条件。
这里有一些伪代码来说明我想要实现的内容:
PCollection pco = null
while(true):
pco = pco.apply(someTransform())
if (conditionSatisfied(pco)):
break
pco.Write()
看来你真的想要迭代计算。目前 Dataflow 不为此提供支持,但我们知道这是一个非常重要的用例,我们正在努力寻找合适的 API 集来表达它。
目前您的解决方法是:
- 迭代 运行 整个管道(运行 管道,检查输出,如果不满足条件则再次 运行 等)。这具有管道设置和拆卸开销的明显缺点。
- 通过无条件地在循环中使用 .apply() 来构建具有硬编码迭代次数的管道,然后 运行 整个管道。
- 两者的结合,例如运行 修复了 5 次迭代管道,直到您对结果满意为止。