0

我正在尝试使用 java sdk v2 将 HadoopJarStep 提交到正在运行的 EMR 集群。通过阅读 api 文档/示例,我似乎无法弄清楚如何引用正在运行的集群而不是启动一个新集群。

谁能指出我正确的构建器方法来指定要提交的现有集群?到目前为止,我拥有的 Scala 代码:

val emr = EmrClient
  .builder()
  .build()       

val stepArgs = Seq("foo", "bar", "baz")

val jarStepConfig = HadoopJarStepConfig.builder()
      .jar("s3://reveal-ci/deploy/emr/visit-etl.jar")
      .args(stepArgs: _*)
      .mainClass("com.revealmobile.visit.etl.Application")
      .build()

val stepConfig = Seq(
      StepConfig.builder()
      .hadoopJarStep(jarStepConfig)
      .build()
    ).asJavaCollection

val stepRequest = AddJobFlowStepsRequest.builder()
      .steps(stepConfig)
      .jobFlowId("JOB FLOW ID")
      .build()

val result = Try(emr.addJobFlowSteps(stepRequest)) // I never specified which cluster?

result match {
      case Success(_) => info("The step was added successfully")
      case Failure(exception) =>
        error(exception.getMessage)
        throw (exception)
    }
4

1 回答 1

0

我最终发现 CLI 和 SDK 之间的术语有点不同。cluster == 在这种情况下工作流,所以我需要使用它来指向正确的集群:

val stepRequest = AddJobFlowStepsRequest.builder()
      .steps(stepConfig)
      .jobFlowId("JOB FLOW ID") //here 
      .build()
于 2020-06-25T13:00:50.580 回答