有什么方法可以在 2 个 Dofn 之间创建依赖关系,以便它将等待第一个 Dofn 方法完成,然后运行第二个 Dofn 方法。 只是想知道我们如何实现这个用例。
最佳答案
可能有一种更简洁的方法来做到这一点,但我注意到执行以下操作将达到您想要的效果:
将第一个 DoFn 的输出也路由到计数器,然后将该计数器的输出作为侧面输入传递到第二个 DoFn 的 ParDo
class DoFn2(apache_beam.DoFn):
def process(self, element, count_do_fn_1_output, *args, **kwargs):
# ...
do_fn_1_output = do_fn_1_input | 'do fn 1' >> apache_beam.ParDo(DoFn1())
count_do_fn_1_output = (
do_fn_1_output
| 'count do_fn_1_output' >> apache_beam.combiners.Count.Globally())
do_fn_2_output = (
do_fn_1_output
| 'do fn 2' >> apache_beam.ParDo(DoFn2(), count_do_fn_1_output=apache_beam.pvalue.AsSingleton(count_do_fn_1_output)))
关于google-cloud-dataflow - 在 Apache Beam 中添加 2 个 Dofn 之间的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60227653/