Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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
Amazon web services 如何在AWS EMR中停止长时间运行的火花流步骤_Amazon Web Services_Apache Spark_Spark Streaming_Emr_Amazon Emr - Fatal编程技术网

Amazon web services 如何在AWS EMR中停止长时间运行的火花流步骤

Amazon web services 如何在AWS EMR中停止长时间运行的火花流步骤,amazon-web-services,apache-spark,spark-streaming,emr,amazon-emr,Amazon Web Services,Apache Spark,Spark Streaming,Emr,Amazon Emr,我使用AWS EMR进行spark流媒体。我在EMR中添加了一个步骤,从动觉流中读取数据。我需要的是一种停止此步骤并添加新步骤的方法 现在,我从Spark驱动程序生成一个线程,并侦听SQS队列中的消息,在收到消息后,我调用sparkContext.stop()。我使用Chef实现部署自动化。因此,当有一个新的工件时,一条消息被放入SQS中,EMR读取它并停止该步骤。然后,Chef使用EMR API添加了一个新步骤 我的问题是,这是停止EMR中长时间运行的流媒体作业的正确方法吗?如果spark部署

我使用AWS EMR进行spark流媒体。我在EMR中添加了一个步骤,从动觉流中读取数据。我需要的是一种停止此步骤并添加新步骤的方法

现在,我从Spark驱动程序生成一个线程,并侦听SQS队列中的消息,在收到消息后,我调用
sparkContext.stop()
。我使用Chef实现部署自动化。因此,当有一个新的工件时,一条消息被放入SQS中,EMR读取它并停止该步骤。然后,Chef使用EMR API添加了一个新步骤


我的问题是,这是停止EMR中长时间运行的流媒体作业的正确方法吗?如果spark部署在独立群集而不是EMR上,将如何处理此问题?

EMR STEP API目前不支持停止。提交步骤时,EMR通常使用您提供的参数运行一个
hadoop jar
命令。如果步骤类型为spark,它将运行
spark submit
命令。当此命令返回0退出代码时,一个步骤被标记为已完成,当它返回任何其他退出代码时,它将被标记为失败。该状态还取决于当前正在运行的纱线应用程序。目前,您可以测试并观察到,如果在这段时间内有任何正在运行的纱线应用程序(不是由STEP生成的),EMR将不会标记步骤已完成

因此,在spark submit上使用主类/JAR,通过编写自定义代码,您可以通过推送所需的退出代码来达到步骤的所需状态


通过查看步骤的controller.log,您可以找到有关EMR将步骤转换为的命令的更多信息

EMR步骤API此时不支持停止。提交步骤时,EMR通常使用您提供的参数运行一个
hadoop jar
命令。如果步骤类型为spark,它将运行
spark submit
命令。当此命令返回0退出代码时,一个步骤被标记为已完成,当它返回任何其他退出代码时,它将被标记为失败。该状态还取决于当前正在运行的纱线应用程序。目前,您可以测试并观察到,如果在这段时间内有任何正在运行的纱线应用程序(不是由STEP生成的),EMR将不会标记步骤已完成

因此,在spark submit上使用主类/JAR,通过编写自定义代码,您可以通过推送所需的退出代码来达到步骤的所需状态

通过查看步骤的controller.log,您可以找到有关EMR将步骤转换为的命令的更多信息