code: public <K extends Comparable<K>> PartitionOperator<T> partitionCustom(Partitioner<K> partitioner, KeySelector<T, K> keyExtractor) {
  		final TypeInformation<K> keyType = TypeExtractor.getKeySelectorTypes(keyExtractor, getType());
  		return new PartitionOperator<>(this, new Keys.SelectorFunctionKeys<>(keyExtractor, getType(), keyType), clean(partitioner), Utils.getCallLocationName());
  	}
docs: Partitions a DataSet on the key returned by the selector, using a custom partitioner.
  This method takes the key selector to get the key to partition on, and a partitioner that
  accepts the key type.
  
  <p>Note: This method works only on single field keys, i.e. the selector cannot return tuples
  of fields.
  
  @param partitioner The partitioner to assign partitions to keys.
  @param keyExtractor The KeyExtractor with which the DataSet is partitioned.
  @return The partitioned DataSet.
  
  @see KeySelector