【发布时间】:2017-06-22 21:35:12
【问题描述】:
我需要做以下事情:
检查服务器是否启动,如果是,我检查该服务器中的 Spark 集群是否启动,如果它关闭,我尝试启动它,如果它已经启动,我继续运行我的 Spark 作业。
我想创建一个任务来检查 Spark 集群是否启动(也许尝试运行一个简单的 Spark 作业)。如果失败,我将启动“启动 Spark 集群”任务。
我正在使用 Airflow,但没有找到触发任务的方法,以防前一个任务失败。除此之外,我需要检查前一个以防它成功,以便它会分支到 Spark 作业任务并跳过“启动 Spark 集群”任务。
如果您能提供一些样品,那就太好了。我尝试使用 trigger_rule 和分支运算符,但到目前为止一无所获。可能是因为网上关于它们的代码示例太少了。
谢谢
【问题讨论】:
-
将触发规则设置为 all_failed 或 one_failed 应该完全符合您的要求。例如,只需在下游创建两个任务并将一个设置为成功,一个设置为两个失败。顺便提一句。如果您说您正在启动一个集群,我假设您使用云提供商。应该有更好的方法来检查集群是否启动,例如使用云供应商命令行工具。如果您使用的是 GCP,甚至还有启动 dataproc 集群并提交作业的气流操作员。
-
谢谢 Gindele,我都试试你的方法。关于集群,我们有一个独立的 spark 集群在我们自己的服务器上运行,没有云。无论如何,如果您有任何建议,我们都非常欢迎。
标签: python triggers controls airflow