Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Apache Airflow启动数据流作业,而不阻止其他任务? 问题_Airflow_Google Cloud Dataflow_Apache Beam_Google Cloud Composer - Fatal编程技术网

如何使用Apache Airflow启动数据流作业,而不阻止其他任务? 问题

如何使用Apache Airflow启动数据流作业,而不阻止其他任务? 问题,airflow,google-cloud-dataflow,apache-beam,google-cloud-composer,Airflow,Google Cloud Dataflow,Apache Beam,Google Cloud Composer,DataflowTemplateOperator类型的气流任务需要很长时间才能完成。这意味着它可以阻止其他任务(正确吗?) 当我们运行更多这些任务时,这意味着我们需要一个更大的Cloud Composer集群(在我们的例子中)来执行本质上是阻塞的任务,而它们不应该是(它们应该是异步操作) 选择权 选项1:只要启动作业,气流作业就成功了 选项2:按照说明编写包装,并按照说明使用重新调度模式 选项1似乎不可行,因为DataflowTemplateOperator只有一个选项可以指定完成检查之间的

DataflowTemplateOperator
类型的气流任务需要很长时间才能完成。这意味着它可以阻止其他任务(正确吗?)

当我们运行更多这些任务时,这意味着我们需要一个更大的Cloud Composer集群(在我们的例子中)来执行本质上是阻塞的任务,而它们不应该是(它们应该是异步操作)

选择权
  • 选项1:只要启动作业,气流作业就成功了
  • 选项2:按照说明编写包装,并按照说明使用重新调度模式
选项1似乎不可行,因为
DataflowTemplateOperator
只有一个选项可以指定完成检查之间的等待时间,称为
poll\u sleep
()

对于
DataflowCreateJavaJobOperator
有一个选项
检查运行中的\u,以等待具有相同名称()

似乎在启动作业后,会执行
wait_for_finish
(请参阅),这归结为一个“不完整”作业(请参阅)

对于选项2,我需要选项1

问题
  • 假设数据流任务将阻止Cloud Composer/Airflow中的其他任务,对吗
  • 是否有一种方法可以使用内置操作符在不使用“等待完成”的情况下调度作业?(我可能忽略了什么)
  • 有没有一个简单的方法自己写这个?我正在考虑执行一个bash启动脚本,然后执行一个任务,该任务将检查作业是否正确完成,但处于重新调度模式
  • 运行数据流作业时,是否有另一种方法来避免阻塞其他任务?基本上这是一个异步操作,不应该占用资源
  • 答案
  • 假设数据流任务将阻止Cloud Composer/Airflow中的其他任务,对吗? 部分是的。气流在配置中具有并行选项,该选项定义了在整个系统中一次应执行的任务数。在该插槽中设置任务块可能会降低系统中的执行速度,但随着任务和DAG数量的增加,此问题必然会发生。您可以根据需要在配置中增加此值

  • 有没有一种不用“等待完成”就可以使用内置操作符安排作业的方法?(我可能忽略了什么)
    A:是的。您可以使用
    PythonOperator
    并在
    python\u callable
    中使用数据流钩子以异步模式启动作业(启动,不等待)

  • 有没有一个简单的方法可以自己写?我正在考虑执行一个bash启动脚本,然后执行一个任务,该任务将检查作业是否正确完成,但处于重新调度模式。 答:当你说“重新安排”时,我假设你将重试一项任务,该任务将查找检查作业是否正确完成的作业。如果我是对的,您可以将任务设置为重试模式,并设置希望重试发生的延迟

  • 在运行数据流作业时,是否有其他方法可以避免阻塞其他任务?基本上这是一个异步操作,不应该占用资源。
    答:我想我在第二个问题中回答了这个问题

  • 谢谢知道如何在异步模式下启动任务吗?同步或异步完全取决于依赖项流。。。当您添加对数据流模板运算符的依赖关系时,下游任务将始终依赖于数据流运算符。。。如果您不想这样做,您必须设计一个依赖项,以确保作业以异步模式启动,并且气流任务不会被阻止…如果数据流模板操作员等待太长时间会给您带来问题,您可以创建自己的数据流模板运算符,当数据流作业未处于最终状态(作业状态为“完成”或作业状态为“失败”)时,该运算符将使数据流任务失败,并标记为在一定延迟后重试。。。这还可以确保任务未被阻止,并且可以使任务处于同步模式。。。