以编程方式获取“新推出的”EMR群集的状态

时间:2017-11-02 08:08:49

标签: scala amazon-web-services aws-sdk emr amazon-emr

我正在关注official docs guide编写Scala脚本,以便使用AWS Java SDK启动EMR集群。我能够确定这里需要的3个主要步骤:

  1. 实例化EMR客户端

    我使用AmazonElasticMapReduceClientBuilder.defaultClient()

  2. 执行此操作
  3. 创建JobFlowRequest

    我创建了一个RunJobFlowRequest对象,并为其提供JobFlowInstancesConfig(两个对象都根据要求提供了适当的参数)

  4. 运行JobFlowRequest

    通过调用emrClient.runJobFlow(runJobFlowRequest)返回RunJobFlowResult对象

  5. 来完成此操作

    但是RunJobFlowResult对象没有提供关于集群是否成功启动的任何线索(使用所有给定的配置)

    现在我知道emrClient的{​​{3}}方法可以用来获取新启动的集群的集群ID,通过它我们可以使用{{3}查询集群的状态打电话。但是,由于我使用Scala脚本来执行所有这些操作,因此我需要将流程自动化(此处查找getClusters()结果中的群集ID必须手动完成)

    有什么办法可以实现吗?

1 个答案:

答案 0 :(得分:3)

你有所有的东西,但没有把它们拼接在一起。

可以从RunJobFlowResult.getJobFlowId()中检索集群的id。 (它是以“j-”开头的字符串。)然后,您可以将此jobFlowId传递给DescribeCluster。

我不会因为你的困惑而责怪你,因为对于某些方法(主要是较旧的API方法)和其他方法中的“clusterId”,它被称为“jobFlowId”。他们真的是一样的。