Dataflow 中的迭代处理

sco*_*ata 3 google-cloud-dataflow

如此处所示 Dataflow 管道由固定的 DAG 表示。我想知道是否有可能实现一个管道,在该管道中处理继续进行,直到基于到目前为止计算的数据满足动态评估的条件。

这是一些伪代码来说明我想要实现的内容:

    PCollection pco = null
    while(true):
        pco = pco.apply(someTransform())
        if (conditionSatisfied(pco)):
            break
    pco.Write()
Run Code Online (Sandbox Code Playgroud)

jkf*_*kff 5

看起来你真的想要迭代计算。目前 Dataflow 不提供支持,但我们知道这是一个非常重要的用例,我们正在努力寻找正确的 API 集来表达它。

目前您的解决方法是:

  • 迭代运行整个管道(运行管道,检查输出,如果条件不满足则再次运行等)。这具有管道设置和拆卸开销的明显缺点。
  • 通过无条件地在循环中使用 .apply() 来构建具有硬编码迭代次数的管道,然后运行整个管道。
  • 两者的结合,例如运行固定的 5 次迭代管道,直到您对结果感到满意为止。