@Override public Map<String, Optional<Partition>> getPartitionsByNames(String databaseName, String tableName, List<String> partitionNames) { Iterable<HivePartitionName> names = transform(partitionNames, name -> HivePartitionName.hivePartitionName(databaseName, tableName, name)); Map<HivePartitionName, Optional<Partition>> all = getAll(partitionCache, names); ImmutableMap.Builder<String, Optional<Partition>> partitionsByName = ImmutableMap.builder(); for (Entry<HivePartitionName, Optional<Partition>> entry : all.entrySet()) { partitionsByName.put(entry.getKey().getPartitionName().get(), entry.getValue()); } return partitionsByName.build(); }
@Override public Map<String, PartitionStatistics> getPartitionStatistics(String databaseName, String tableName, Set<String> partitionNames) { List<HivePartitionName> partitions = partitionNames.stream() .map(partitionName -> HivePartitionName.hivePartitionName(databaseName, tableName, partitionName)) .collect(toImmutableList()); Map<HivePartitionName, PartitionStatistics> statistics = getAll(partitionStatisticsCache, partitions); return statistics.entrySet() .stream() .collect(toImmutableMap(entry -> entry.getKey().getPartitionName().get(), Entry::getValue)); }
@Override public Optional<Map<String, Partition>> getPartitionsByNames(String databaseName, String tableName, List<String> partitionNames) { Iterable<HivePartitionName> names = transform(partitionNames, name -> HivePartitionName.partition(databaseName, tableName, name)); ImmutableMap.Builder<String, Partition> partitionsByName = ImmutableMap.builder(); Map<HivePartitionName, Optional<Partition>> all = getAll(partitionCache, names); for (Entry<HivePartitionName, Optional<Partition>> entry : all.entrySet()) { if (!entry.getValue().isPresent()) { return Optional.empty(); } partitionsByName.put(entry.getKey().getPartitionName(), entry.getValue().get()); } return Optional.of(partitionsByName.build()); }