Amazon EMR terminateJobFlow для запросов с более чем максимальными кластерами, которые могут быть прекращены - PullRequest
0 голосов
/ 05 февраля 2019

Я использую AWSElasticMapReduceJavaClient-1.11.x, и максимальное количество кластеров, которые EMR может завершить за один раз, равно 10. Как бы я мог завершить запрос с помощью, скажем, 100 кластеров за один terminateJobFlows вызов?Я реализую интерфейс AmazonElasticMapReduce, поэтому этот метод необходимо переопределить и вернуть TerminateJobFlowsResult.К сожалению, это не обратно совместимо с версией 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??
                });

}

1 Ответ

0 голосов
/ 16 марта 2019

Объект TerminateJobFlowsResult не содержит содержимого и функционально эквивалентен возврату void в предыдущих версиях SDK.Это означает, что вы можете вернуть любой из полученных экземпляров без разбора или просто создать новый самостоятельно и вернуть его в конце, чтобы удовлетворить контракт на интерфейс.

...