我想在eclipse中将我的java代码中的作业添加到正在运行的EMR集群中,以节省启动时间(创建ec2,bootstrapping ......)。
我知道如何从java代码运行一个新集群,但是在完成所有工作后它就会终止。
RunJobFlowRequest runFlowRequest = new RunJobFlowRequest()
.withName("Some name")
.withInstances(instances)
// .withBootstrapActions(bootstrapActions)
.withJobFlowRole("EMR_EC2_DefaultRole")
.withServiceRole("EMR_DefaultRole")
.withSteps(firstJobStep, secondJobStep, thirdJobStep)
.withLogUri("s3n://path/to/logs");
// Run the jobs
RunJobFlowResult runJobFlowResult = mapReduce
.runJobFlow(runFlowRequest);
String jobFlowId = runJobFlowResult.getJobFlowId();
答案 0 :(得分:1)
您必须将KeepJobFlowAliveWhenNoSteps
参数设置为TRUE
,否则在执行所有步骤后群集将被终止。如果设置了此属性,则在执行所有步骤后,群集将继续处于等待状态。
将.withKeepJobFlowAliveWhenNoSteps(true)
添加到现有代码中。
有关详细信息,请参阅此doc。