K - the type of the keys in the output PCollectionV - the type of the elements in the input PCollection and the values in the output
     PCollectionpublic class WithKeys<K,V> extends PTransform<PCollection<V>,PCollection<KV<K,V>>>
WithKeys<K, V> takes a PCollection<V>, and either a constant key of type K or a function from V to K, and returns a PCollection<KV<K, V>>, where
 each of the values in the input PCollection has been paired with either the constant key
 or a key computed from the value.
 Example of use:
 PCollection<String> words = ...;
 PCollection<KV<Integer, String>> lengthsToWords =
     words.apply(WithKeys.of(new SerializableFunction<String, Integer>() {
         public Integer apply(String s) { return s.length(); } }));
 Each output element has the same timestamp and is in the same windows as its corresponding
 input element, and the output PCollection has the same WindowFn associated with it as the input.
annotations, displayData, name, resourceHints| Modifier and Type | Method and Description | 
|---|---|
| PCollection<KV<K,V>> | expand(PCollection<V> in)Override this method to specify how this  PTransformshould be expanded on the givenInputT. | 
| static <K,V> WithKeys<K,V> | of(K key)Returns a  PTransformthat takes aPCollection<V>and returns aPCollection<KV<K, V>>, where each of the values in the inputPCollectionhas been
 paired with the given key. | 
| static <K,V> WithKeys<K,V> | of(SerializableFunction<V,K> fn)Returns a  PTransformthat takes aPCollection<V>and returns aPCollection<KV<K, V>>, where each of the values in the inputPCollectionhas been
 paired with a key computed from the value by invoking the givenSerializableFunction. | 
| WithKeys<K,V> | withKeyType(TypeDescriptor<K> keyType)Return a  WithKeysthat is like this one with the specified key type descriptor. | 
addAnnotation, compose, compose, getAdditionalInputs, getAnnotations, getDefaultOutputCoder, getDefaultOutputCoder, getDefaultOutputCoder, getKindString, getName, getResourceHints, populateDisplayData, setDisplayData, setResourceHints, toString, validate, validatepublic static <K,V> WithKeys<K,V> of(SerializableFunction<V,K> fn)
PTransform that takes a PCollection<V> and returns a PCollection<KV<K, V>>, where each of the values in the input PCollection has been
 paired with a key computed from the value by invoking the given SerializableFunction.
 If using a lambda in Java 8, withKeyType(TypeDescriptor) must be called on the
 result PTransform.
public static <K,V> WithKeys<K,V> of(K key)
PTransform that takes a PCollection<V> and returns a PCollection<KV<K, V>>, where each of the values in the input PCollection has been
 paired with the given key.public WithKeys<K,V> withKeyType(TypeDescriptor<K> keyType)
WithKeys that is like this one with the specified key type descriptor.
 For use with lambdas in Java 8, either this method must be called with an appropriate type
 descriptor or PCollection.setCoder(Coder) must be called on the output PCollection.
public PCollection<KV<K,V>> expand(PCollection<V> in)
PTransformPTransform should be expanded on the given
 InputT.
 NOTE: This method should not be called directly. Instead apply the PTransform should
 be applied to the InputT using the apply method.
 
Composite transforms, which are defined in terms of other transforms, should return the output of one of the composed transforms. Non-composite transforms, which do not apply any transforms internally, should return a new unbound output and register evaluators (via backend-specific registration methods).
expand in class PTransform<PCollection<V>,PCollection<KV<K,V>>>