Google 云数据流中的条件迭代

Conditional iterations in Google cloud dataflow

我正在寻找使用 Google Cloud Dataflow 实施数据分析算法的机会。请注意,我还没有数据流方面的经验。我正在研究它是否能满足我的需求。

我的部分算法包含一些条件迭代,即继续直到满足某些条件:

PCollection data  = ...
while(needsMoreWork(data)) {
  data = doAStep(data)
}

我查看了文档,据我所知,如果我知道管道开始之前的确切迭代次数,我只能"iterations"。在这种情况下,我的管道构造代码可以只创建一个具有固定步骤数的顺序管道。

我唯一能想到的"solution"就是运行在单独的管道中进行每次迭代,将中间数据存储在某个数据库中,然后在我的管道构建中决定是否启动一个下一次迭代的新管道。这似乎是一个极其低效的解决方案!

有什么好的方法可以在 Google 云数据流中执行这种额外的迭代?

谢谢!

目前看来,你提到的两个方案都是合理的。您甚至可以将这两种方法结合起来。创建一个进行几次迭代的管道(如果 needsMoreWork 为假,则变为空操作),然后有一个主 Java 程序多次提交该管道,直到 needsMoreWork 为假。

我们已经多次看到这个用例,希望将来能在本地解决它。正在 https://github.com/GoogleCloudPlatform/DataflowJavaSDK/issues/50.

中跟踪本机支持