code: @Override
      public Map<String, Optional<Partition>> getPartitionsByNames(String databaseName, String tableName, List<String> partitionNames)
      {
          requireNonNull(partitionNames, "partitionNames is null");
          if (partitionNames.isEmpty()) {
              return ImmutableMap.of();
          }
  
          List<Partition> partitions = batchGetPartition(databaseName, tableName, partitionNames);
  
          Map<String, List<String>> partitionNameToPartitionValuesMap = partitionNames.stream()
                  .collect(toMap(identity(), HiveUtil::toPartitionValues));
          Map<List<String>, Partition> partitionValuesToPartitionMap = partitions.stream()
                  .collect(toMap(Partition::getValues, identity()));
  
          ImmutableMap.Builder<String, Optional<Partition>> resultBuilder = ImmutableMap.builder();
          for (Entry<String, List<String>> entry : partitionNameToPartitionValuesMap.entrySet()) {
              Partition partition = partitionValuesToPartitionMap.get(entry.getValue());
              resultBuilder.put(entry.getKey(), Optional.ofNullable(partition));
          }
          return resultBuilder.build();
      }
docs: <pre>
  Ex: Partition keys = ['a', 'b']
  Partition names = ['a=1/b=2', 'a=2/b=2']
  </pre>
  
  @param partitionNames List of full partition names
  @return Mapping of partition name to partition object