Python 仅在另一个管道在google数据流上完成后执行管道
我想在google数据流上运行一个管道,它依赖于另一个管道的输出。现在,我正在使用DirectRunner本地运行两条管道:Python 仅在另一个管道在google数据流上完成后执行管道,python,google-cloud-dataflow,apache-beam,Python,Google Cloud Dataflow,Apache Beam,我想在google数据流上运行一个管道,它依赖于另一个管道的输出。现在,我正在使用DirectRunner本地运行两条管道: with beam.Pipeline(options=pipeline_options) as p: (p | beam.io.ReadFromText(known_args.input) | SomeTransform() | beam.io.WriteToText('temp')) with beam.Pipeline(opti
with beam.Pipeline(options=pipeline_options) as p:
(p
| beam.io.ReadFromText(known_args.input)
| SomeTransform()
| beam.io.WriteToText('temp'))
with beam.Pipeline(options=pipeline_options) as p:
(p
| beam.io.ReadFromText('temp*')
| AnotherTransform()
| beam.io.WriteToText(known_args.output))
我的问题如下:
- DataflowRunner是否保证第二个管道仅在第一个管道完成后启动
- 是否有一种首选的方法,使两条管道在彼此之后连续运行
- 还有没有推荐的方法将这些管道分离到不同的文件中,以便更好地测试它们
PipelineResult
类的waitUntilFinish()
方法。参考文献:
是否有一种首选的方法,使两条管道在彼此之后连续运行
考虑使用Apache Airflow之类的工具来管理依赖管道。您甚至可以实现一个简单的bash脚本来在一个管道完成后部署另一个管道
还有没有推荐的方法将这些管道分离到不同的文件中,以便更好地测试它们
是的,单独的文件。这只是一个很好的代码组织,对于测试来说并不一定更好。您的第一点并不完全正确。的确,数据流本身并不管理管道依赖关系,但它确实提供了一个API来等待管道完成,管道对象上的“with”语句使用该API。@jkff,是的,这是正确的。Apache Beam Java SDK中的
PipelineResult
类有一个方法waitUntilFinish()
。python呢?