从id amazon emr获取集群对象

dvtswwa3  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(306)

我通过gui屏幕启动了emr集群。在集群启动后,我可以看到id。如何获得类cluster的对象来表示具有该id的集群?我使用java与emr交互。

zd287kbt

zd287kbt1#

不能只运行一个命令来获取集群的标识。下面是一个算法的工作示例,该算法读取所有失败集群的id。

AWSCredentials credentials;
credentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");

AmazonElasticMapReduceClient emrClient;
emrClient = new AmazonElasticMapReduceClient(credentials);
emrClient.setEndpoint("elasticmapreduce.eu-west-1.amazonaws.com");

ListClustersRequest req;
req = new ListClustersRequest().withClusterStates(ClusterState.TERMINATED_WITH_ERRORS);

ListClustersResult res;
res = emrClient.listClusters(req);

int size  = res.getClusters().size();

System.out.println("*****************CLUSTER LIST***************");
System.out.println("***Size: " + size);

for(int i = 0 ; i < size; i++){           
    String clusterID = res.getClusters().get(i).getId();
    System.out.println(">>> Cluster: " + clusterID);    
}

请注意以下步骤:
生成一个emr客户端,使用您自己的凭据访问amazon的服务
创建一个指示状态筛选器的群集请求(存在多个其他筛选器)
获取所选群集的实际列表
获取for循环中每个集群的id
至于它所指的具体问题,恐怕无法得到集群的实际对象。相反,api允许获取具体集群的信息摘要(在上面提供的代码中使用)。但是,您仍然可以发出命令,例如终止群集,例如:

clusterId  //Defined in the code above

TerminateJobFlowsRequest terminate;
terminate = new TerminateJobFlowsRequest().withJobFlowIds(Arrays.asList(new String[] {clusterId});

emrClient.terminateJobFlows(terminate);

相关问题