in aws-glue-datacatalog-client-common/src/main/java/com/amazonaws/glue/catalog/metastore/DefaultAWSGlueMetastore.java [212:245]
public List<Partition> getPartitionsByNames(String dbName, String tableName,
List<PartitionValueList> partitionsToGet) {
List<List<PartitionValueList>> batchedPartitionsToGet = Lists.partition(partitionsToGet,
BATCH_GET_PARTITIONS_MAX_REQUEST_SIZE);
List<Future<BatchGetPartitionResult>> batchGetPartitionFutures = Lists.newArrayList();
for (List<PartitionValueList> batch : batchedPartitionsToGet) {
final BatchGetPartitionRequest request = new BatchGetPartitionRequest()
.withDatabaseName(dbName)
.withTableName(tableName)
.withPartitionsToGet(batch)
.withCatalogId(catalogId);
batchGetPartitionFutures.add(this.executorService.submit(new Callable<BatchGetPartitionResult>() {
@Override
public BatchGetPartitionResult call() throws Exception {
return glueClient.batchGetPartition(request);
}
}));
}
List<Partition> result = Lists.newArrayList();
try {
for (Future<BatchGetPartitionResult> future : batchGetPartitionFutures) {
result.addAll(future.get().getPartitions());
}
} catch (ExecutionException e) {
Throwables.propagateIfInstanceOf(e.getCause(), AmazonServiceException.class);
Throwables.propagate(e.getCause());
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
return result;
}