从 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 了解更多详情。