如何使用气流重新启动失败的结构化流式处理spark作业?

zkure5ic  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(461)

我需要在aws emr中运行一个结构化的流式spark作业。作为弹性要求,如果spark作业由于某些原因而失败,我们希望spark作业可以在emr中重新创建。类似于ecs中的任务编排,如果健康检查失败,可以重新启动任务。然而,emr更多的是一个计算引擎,而不是编排系统。
我正在寻找一些大数据工作流编排工具,如气流。但是,它不能支持dag中的循环。如何实现以下功能?
步进加法器(emraddstepsoperator)>>步进检测器(emrstepsensor)>>步进加法器(emraddstepsoperator)。
有什么方法可以提高这种工作弹性?欢迎评论!

j91ykkif

j91ykkif1#

apachespark(使用spark submit提交的作业)已经涵盖了一些恢复能力,但是当您希望与不同的进程(不使用spark)交互时,气流可能是一个解决方案。对你来说 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
)

相关问题