首页 > 解决方案 > Amazon EMR terminateJobFlows 用于具有超过可以终止的最大集群的请求

问题描述

我正在使用 AWSElasticMapReduceJavaClient-1.11.x,并且 EMR 一次可以终止的最大集群是 10。我将如何在一次terminateJobFlows调用中终止一个请求,比如说 100 个集群?我正在实现AmazonElasticMapReduce接口,所以这个方法需要被覆盖并返回一个TerminateJobFlowsResult. 不幸的是,这与 void 方法不向后兼容 1.10 版terminateJobFlows,但它现在返回结果。

@Override
public TerminateJobFlowsResult terminateJobFlows(TerminateJobFlowsRequest request) {
  List<List<String>> distributedClusterIds = Lists.partition(request.getJobFlowIds(), 10);

  distributedClusterIds.stream()
                .map(TerminateJobFlowsRequest::new)
                .forEach(request -> {
                    emrClient.terminateJobFlows(request); // returns a TerminateJobFlowsResult
                    // How to return each result somehow??
                });

}

标签: javaamazon-web-servicesamazon-emr

解决方案


TerminateJobFlowsResult对象不包含任何内容,在功能上等同void于以前 SDK 版本中的返回。这意味着您可以不加选择地返回您收到的任何实例,或者简单地自己创建一个新实例并在最后返回它以满足接口契约。


推荐阅读