Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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 spark 如何使用气流重新启动失败的结构化流媒体spark作业?_Apache Spark_Airflow_Amazon Ecs_Amazon Emr - Fatal编程技术网

Apache spark 如何使用气流重新启动失败的结构化流媒体spark作业?

Apache spark 如何使用气流重新启动失败的结构化流媒体spark作业?,apache-spark,airflow,amazon-ecs,amazon-emr,Apache Spark,Airflow,Amazon Ecs,Amazon Emr,我需要在AWS EMR中运行结构化流媒体spark作业。作为弹性要求,如果spark作业由于某些原因失败,我们希望可以在EMR中重新创建spark作业。与ECS中的任务编排类似,如果健康检查失败,可以重新启动任务。然而,EMR更多的是一个计算引擎,而不是编排系统 我正在寻找一些大数据工作流编排工具,例如Airflow。但是,它不能支持DAG中的循环。如何实现以下功能 步进加法器(EmrAddStepsOperator)>>步进检测器(EmrStepSensor)>>步进加法器(EmrAddSte

我需要在AWS EMR中运行结构化流媒体spark作业。作为弹性要求,如果spark作业由于某些原因失败,我们希望可以在EMR中重新创建spark作业。与ECS中的任务编排类似,如果健康检查失败,可以重新启动任务。然而,EMR更多的是一个计算引擎,而不是编排系统

我正在寻找一些大数据工作流编排工具,例如Airflow。但是,它不能支持DAG中的循环。如何实现以下功能

步进加法器(EmrAddStepsOperator)>>步进检测器(EmrStepSensor)>>步进加法器(EmrAddStepsOperator)


有什么建议可以提高这种工作层面的弹性?欢迎评论

Apache Spark(使用Spark submit提交的作业)已经涵盖了一些恢复能力,但是,当您想要与不同的进程交互时,如果不是使用Spark,则气流可能是一个解决方案。在您的情况下,
传感器
可以帮助检测是否发生了某种情况。基于此,您可以在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
)

非常感谢。与ECS的healthcheck非常相似。对于ApacheSpark提供的弹性,您是否参考了Spark submit中的maxAttempts之类的东西,它允许在作业失败时重试?