Как отправить новый шаг в работающий кластер EMR в java sdk v2

Я пытаюсь отправить HadoopJarStep в работающий кластер EMR с пакетом java sdk v2. Из чтения документов/примеров 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)
    }

person foobarbaz    schedule 22.06.2020    source источник


Ответы (1)


В конце концов я понял, что терминология CLI и SDK немного отличается. cluster == поток заданий в этом случае, поэтому мне нужно было использовать это, чтобы указать на правильный кластер:

val stepRequest = AddJobFlowStepsRequest.builder()
      .steps(stepConfig)
      .jobFlowId("JOB FLOW ID") //here 
      .build()
person foobarbaz    schedule 25.06.2020