[英]How to use Airflow to restart a failed structured streaming spark job?
我需要在 AWS EMR 中運行結構化流式 Spark 作業。 作為彈性要求,如果 Spark 作業由於某些原因失敗,我們希望可以在 EMR 中重新創建 Spark 作業。 類似於 ECS 中的任務編排,如果健康檢查失敗,可以重新啟動任務。 然而,EMR 更像是一個計算引擎而不是編排系統。
我正在尋找一些大數據工作流編排工具,例如Airflow。 但是,它不能支持 DAG 中的循環。 如何實現以下一些功能?
step_adder (EmrAddStepsOperator) >> step_checker (EmrStepSensor) >> step_adder (EmrAddStepsOperator)。
提高這種工作水平彈性的建議方法是什么? 歡迎任何意見!
Apache Spark(使用 spark-submit 提交的作業)已經涵蓋了一些彈性,但是當您想要與不使用 Spark 的不同進程交互時,Airflow 可能是一個解決方案。 在您的情況下, Sensor
可以幫助檢測是否發生了某種情況。 基於此,您可以在 DAG 中做出決定。 這是一個簡單的HttpSensor
等待批處理作業,看看它是否成功完成
wait_batch_to_finish = HttpSensor(
http_conn_id='spark_web',
task_id="wait_batch_to_finish",
method="GET",
headers={"Content-Type": "application/json"},
endpoint="/json",
response_check=lambda response: check_spark_status(response, "{{ ti.xcom_pull('batch_intel_task')}}"),
poke_interval=60,
dag=dag
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.