如何以编程方式检查Spark步骤状态(在EMR群集上提交)?

时间:2019-07-17 01:14:49

标签: amazon-web-services apache-spark aws-lambda amazon-emr aws-step-functions

我创建了一个简单的step函数,如下所示: 开始->启动EMR集群并提交作业->结束

我想找到一种机制来识别我的火花步骤是否成功完成?

我能够启动EMR群集并将火花任务附加到它,从而成功完成并终止了群集。 在此链接中执行了以下步骤: Creating AWS EMR cluster with spark step using lambda function fails with "Local file does not exist"

现在,我正在寻找状态,无论是否成功创建了EMR集群,ejob轮询器都会向我提供信息。 我正在寻找如何找出Spark作业状态的方法

from botocore.vendored import requests 
import boto3
import json 
def lambda_handler(event, context): 
    conn = boto3.client("emr") 
    cluster_id = conn.run_job_flow(   
        Name='xyz',   
        ServiceRole='xyz',   
        JobFlowRole='asd',   
        VisibleToAllUsers=True,   
        LogUri='<location>',   
        ReleaseLabel='emr-5.16.0',   
        Instances={     
            'Ec2SubnetId': 'xyz',     
            'InstanceGroups': [         
                {           
                'Name': 'Master',           
                'Market': 'ON_DEMAND',           
                'InstanceRole': 'MASTER',           
                'InstanceType': 'm4.xlarge',           
                'InstanceCount': 1,         
                }
            ],   
            'KeepJobFlowAliveWhenNoSteps': False,   
            'TerminationProtected': False,  
        },  
        Applications=[
            {    
            'Name': 'Spark'
            },
            {
            'Name': 'Hadoop' 
            }
        ],  
            Steps=[{     'Name': "mystep",     
            'ActionOnFailure': 'TERMINATE_CLUSTER',     
            'HadoopJarStep': {       
                'Jar': 'jar',       
                'Args' : [
                        <insert args> , jar, mainclass
                    ]     
                }   

            }] 

    )
    return cluster_id


1 个答案:

答案 0 :(得分:0)

您可以使用cli或sdk来list集群的所有步骤,然后使用describe特定步骤来获取其状态。

相关问题