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 次迭代管道,直到您对结果满意为止。