如何使用boto向等待的Amazon EMR作业流添加步骤,而不会在完成后终止作业流程?
我在亚马逊的Elastic Map Reduce上创建了一个交互式作业流程并加载了一些表格。当我使用Boto的emr_conn.add_jobflow_steps(...)
将新步骤传递给作业流程时,作业流程在完成或失败后终止。
我知道我可以使用带有run_jobflow
参数的keep_alive
与boto开始工作流程 - 但我想使用已经运行的流程。
答案 0 :(得分:3)
如果正确完成,则不应以keep_alive=True
终止。也就是说,它通常会在失败时退出,因此您希望将terminate_on_failure="CONTINUE"
添加到add_job_steps
个参数中。
答案 1 :(得分:2)
我使用类似的东西
使用
创建import boto.emr
conn = boto.emr.connect_to_region('us-west-2')
jobid = conn.run_jobflow(name='cluster-name',
ec2_keyname="yourkeyhere",
num_instances=3,
master_instance_type='m1.medium',
slave_instance_type='m1.medium',
keep_alive=True,
)
将作业添加到现有群集(等待群集处于等待状态)
import boto.emr
conn = boto.emr.connect_to_region('us-west-2')
# get the list of waiting cluster and take the first one
jobid = conn.describe_jobflows(states=["WAITING"])[0].jobflowid
print jobid
flow_steps = list()
runThing = boto.emr.step.ScriptRunnerStep(
name="job step name",
step_args = ["s3://yours3bucket/dosmthg.sh"])
flow_steps.append(runThing)
conn.add_jobflow_steps(jobid, flow_steps)
注释
答案 2 :(得分:0)
您也可以使用' KeepJobFlowAliveWhenNoSteps'标志。
u'\u202C'