【发布时间】:2020-01-25 14:59:03
【问题描述】:
问题
DataflowTemplateOperator 类型的气流任务需要很长时间才能完成。这意味着其他任务可以被它阻止(对吗?)。
当我们运行更多这样的任务时,这意味着我们需要更大的 Cloud Composer 集群(在我们的例子中)来执行本质上是阻塞而它们不应该阻塞的任务(它们应该是 async 操作)。
选项
选项 1 似乎不可行,因为 DataflowTemplateOperator 只有一个选项来指定完成检查之间的等待时间,称为 poll_sleep (source)。
对于DataflowCreateJavaJobOperator,有一个选项check_if_running 可以等待完成以前的同名作业 (see this code)
似乎在启动一个作业后,wait_for_finish 被执行(参见this line),这归结为一个“不完整”的作业(参见this line)。
对于选项 2,我需要选项 1。
问题
- 我认为 Dataflow 任务会阻止 Cloud Composer/Airflow 中的其他任务是否正确?
- 有没有办法使用内置运算符无需“等待完成”来安排作业? (我可能忽略了一些东西)
- 有没有一种简单的方法可以自己编写?我正在考虑只执行一个 bash 启动脚本,然后执行一个任务来查看作业是否正确完成,但处于重新安排模式。
- 在运行数据流作业时是否有另一种避免阻塞其他任务的方法?基本上这是一个异步操作,不应该占用资源。
【问题讨论】:
标签: airflow google-cloud-dataflow apache-beam google-cloud-composer