com.google.cloud.dataflow.sdk.transforms

## Class Combine.BinaryCombineFn<V>

- java.lang.Object
- - com.google.cloud.dataflow.sdk.transforms.Combine.CombineFn<V,Combine.Holder<V>,V>
  - - com.google.cloud.dataflow.sdk.transforms.Combine.BinaryCombineFn<V>

All Implemented Interfaces:
  CombineFnBase.GlobalCombineFn<V,Combine.Holder<V>,V>, HasDisplayData, Serializable

Direct Known Subclasses:
  Max.MaxFn, Min.MinFn

Enclosing class:
  Combine

    public abstract static class Combine.BinaryCombineFn<V>
    extends Combine.CombineFn<V,Combine.Holder<V>,V>

An abstract subclass of `Combine.CombineFn` for implementing combiners that are more easily expressed as binary operations.

See Also:
  Serialized Form

### Constructor Summary

Constructors
Constructor and Description
`BinaryCombineFn()`

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`Combine.Holder<V>` `addInput(Combine.Holder<V> accumulator, V input)` Adds the given input value to the given accumulator, returning the new accumulator value.
`abstract V` `apply(V left, V right)` Applies the binary operation to the two operands, returning the result.
`Combine.Holder<V>` `createAccumulator()` Returns a new, mutable accumulator value, representing the accumulation of zero input values.
`V` `extractOutput(Combine.Holder<V> accumulator)` Returns the output value that is the result of combining all the input values represented by the given accumulator.
`TypeVariable<?>` `getAccumTVariable()` Returns the `TypeVariable` of `AccumT`.
`Coder<Combine.Holder<V>>` `getAccumulatorCoder(CoderRegistry registry, Coder<V> inputCoder)` Returns the `Coder` to use for accumulator `AccumT` values, or null if it is not able to be inferred.
`Coder<V>` `getDefaultOutputCoder(CoderRegistry registry, Coder<V> inputCoder)` Returns the `Coder` to use by default for output `OutputT` values, or null if it is not able to be inferred.
`String` `getIncompatibleGlobalWindowErrorMessage()` Returns the error message for not supported default values in Combine.globally().
`TypeVariable<?>` `getInputTVariable()` Returns the `TypeVariable` of `InputT`.
`TypeVariable<?>` `getOutputTVariable()` Returns the `TypeVariable` of `OutputT`.
`V` `identity()` Returns the value that should be used for the combine of the empty set.
`Combine.Holder<V>` `mergeAccumulators(Iterable<Combine.Holder<V>> accumulators)` Returns an accumulator representing the accumulation of all the input values accumulated in the merging accumulators.
`void` `populateDisplayData(DisplayData.Builder builder)` Register display data for the given transform or component.

### Methods inherited from class com.google.cloud.dataflow.sdk.transforms.Combine.CombineFn

`apply, asKeyedFn, compact, defaultValue, getOutputType`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### BinaryCombineFn

    public BinaryCombineFn()

### Method Detail

#### apply

    public abstract V apply(V left,
                            V right)

Applies the binary operation to the two operands, returning the result.

#### identity

    public V identity()

Returns the value that should be used for the combine of the empty set.

#### createAccumulator

    public Combine.Holder<V> createAccumulator()

Description copied from class: `Combine.CombineFn`
Returns a new, mutable accumulator value, representing the accumulation of zero input values.

Specified by:
  `createAccumulator` in class `Combine.CombineFn<V,Combine.Holder<V>,V>`

#### addInput

    public Combine.Holder<V> addInput(Combine.Holder<V> accumulator,
                                      V input)

Description copied from class: `Combine.CombineFn`
Adds the given input value to the given accumulator, returning the new accumulator value.

For efficiency, the input accumulator may be modified and returned.

Specified by:
  `addInput` in class `Combine.CombineFn<V,Combine.Holder<V>,V>`

#### mergeAccumulators

    public Combine.Holder<V> mergeAccumulators(Iterable<Combine.Holder<V>> accumulators)

Description copied from class: `Combine.CombineFn`
Returns an accumulator representing the accumulation of all the input values accumulated in the merging accumulators.

May modify any of the argument accumulators. May return a fresh accumulator, or may return one of the (modified) argument accumulators.

Specified by:
  `mergeAccumulators` in class `Combine.CombineFn<V,Combine.Holder<V>,V>`

#### extractOutput

    public V extractOutput(Combine.Holder<V> accumulator)

Description copied from class: `Combine.CombineFn`
Returns the output value that is the result of combining all the input values represented by the given accumulator.

Specified by:
  `extractOutput` in class `Combine.CombineFn<V,Combine.Holder<V>,V>`

#### getAccumulatorCoder

    public Coder<Combine.Holder<V>> getAccumulatorCoder(CoderRegistry registry,
                                                        Coder<V> inputCoder)

Description copied from interface: `CombineFnBase.GlobalCombineFn`
Returns the `Coder` to use for accumulator `AccumT` values, or null if it is not able to be inferred.

By default, uses the knowledge of the `Coder` being used for `InputT` values and the enclosing `Pipeline`'s `CoderRegistry` to try to infer the Coder for `AccumT` values.

This is the Coder used to send data through a communication-intensive shuffle step, so a compact and efficient representation may have significant performance benefits.

Specified by:
  `getAccumulatorCoder` in interface `CombineFnBase.GlobalCombineFn<V,Combine.Holder<V>,V>`

#### getDefaultOutputCoder

    public Coder<V> getDefaultOutputCoder(CoderRegistry registry,
                                          Coder<V> inputCoder)

Description copied from interface: `CombineFnBase.GlobalCombineFn`
Returns the `Coder` to use by default for output `OutputT` values, or null if it is not able to be inferred.

By default, uses the knowledge of the `Coder` being used for input `InputT` values and the enclosing `Pipeline`'s `CoderRegistry` to try to infer the Coder for `OutputT` values.

Specified by:
  `getDefaultOutputCoder` in interface `CombineFnBase.GlobalCombineFn<V,Combine.Holder<V>,V>`

#### getIncompatibleGlobalWindowErrorMessage

    public String getIncompatibleGlobalWindowErrorMessage()

Description copied from interface: `CombineFnBase.GlobalCombineFn`
Returns the error message for not supported default values in Combine.globally().

Specified by:
  `getIncompatibleGlobalWindowErrorMessage` in interface `CombineFnBase.GlobalCombineFn<InputT,AccumT,OutputT>`

#### getInputTVariable

    public TypeVariable<?> getInputTVariable()

Returns the `TypeVariable` of `InputT`.

#### getAccumTVariable

    public TypeVariable<?> getAccumTVariable()

Returns the `TypeVariable` of `AccumT`.

#### getOutputTVariable

    public TypeVariable<?> getOutputTVariable()

Returns the `TypeVariable` of `OutputT`.

#### populateDisplayData

    public void populateDisplayData(DisplayData.Builder builder)

Register display data for the given transform or component.

`populateDisplayData(DisplayData.Builder)` is invoked by Pipeline runners to collect display data via `DisplayData.from(HasDisplayData)`. Implementations may call `super.populateDisplayData(builder)` in order to register display data in the current namespace, but should otherwise use `subcomponent.populateDisplayData(builder)` to use the namespace of the subcomponent.

By default, does not register any display data. Implementors may override this method to provide their own display data.

Specified by:
  `populateDisplayData` in interface `HasDisplayData`
Parameters:
  `builder` - The builder to populate with display data.
See Also:
  `HasDisplayData`