amazon-web-services - 如何在 java sdk v2 中向正在运行的 EMR 集群提交新步骤
问题描述
我正在尝试使用 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)
}
解决方案
我最终发现 CLI 和 SDK 之间的术语有点不同。cluster == 在这种情况下工作流,所以我需要使用它来指向正确的集群:
val stepRequest = AddJobFlowStepsRequest.builder()
.steps(stepConfig)
.jobFlowId("JOB FLOW ID") //here
.build()
推荐阅读
- angular - 在通过 Froala 编辑器将图像上传到 s3 之前添加异步检查
- go - 基于条件的 Go 包选择器
- javascript - 无法使用 d3.js 增加地图(绘图)大小
- spacevim - Space Vim 不承认其他文件夹中的头文件
- dart - 分析器,用什么代替 parameterKind
- autohotkey - 如何重新映射;AutoHotkey 中的(分号)?
- sql - T-SQL 运行总和
- r - 使用 R 将 JSON 字符串转换为 JSON 对象
- php - 无效的视图。发送电子邮件 - Laravel - 5.8
- node.js - 如何从 node.js 和 socket.io 获取负载信息