从 eclipse 提交作业到 amazon EMR 上的 运行 集群
submit a job from eclipse to a running cluster on amazon EMR
我想将作业从我在 eclipse 中的 java 代码添加到 EMR 的 运行ning 集群以节省启动时间(创建 ec2、引导...)。
我知道如何从 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();
您必须将KeepJobFlowAliveWhenNoSteps
参数设置为TRUE
,否则集群将在执行所有步骤后终止。如果设置了这个属性,集群会在执行完所有步骤后继续处于waiting状态。
将 .withKeepJobFlowAliveWhenNoSteps(true)
添加到现有代码。
请参阅此 doc 了解更多详情。
我想将作业从我在 eclipse 中的 java 代码添加到 EMR 的 运行ning 集群以节省启动时间(创建 ec2、引导...)。
我知道如何从 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();
您必须将KeepJobFlowAliveWhenNoSteps
参数设置为TRUE
,否则集群将在执行所有步骤后终止。如果设置了这个属性,集群会在执行完所有步骤后继续处于waiting状态。
将 .withKeepJobFlowAliveWhenNoSteps(true)
添加到现有代码。
请参阅此 doc 了解更多详情。