Takes the inputs and accumulates.
Creates a new copy of this accumulator.
Returns if this accumulator is zero value or not.
Returns if this accumulator is zero value or not. e.g. for a counter accumulator, 0 is zero value; for a list accumulator, Nil is zero value.
Merges another same-type accumulator into this one and update its state, i.e.
Merges another same-type accumulator into this one and update its state, i.e. this should be merge-in-place.
Resets this accumulator, which is zero value.
Resets this accumulator, which is zero value. i.e. call isZero
must
return true.
Defines the current value of this accumulator
Creates a new copy of this accumulator, which is zero value.
Creates a new copy of this accumulator, which is zero value. i.e. call isZero
on the copy
must return true.
Returns the id of this accumulator, can only be called after registration.
Returns true if this accumulator has been registered.
Returns true if this accumulator has been registered.
All accumulators must be registered before use, or it will throw exception.
Returns the name of this accumulator, can only be called after registration.
The base class for accumulators, that can accumulate inputs of type
IN
, and produce output of typeOUT
.OUT
should be a type that can be read atomically (e.g., Int, Long), or thread-safely (e.g., synchronized collections) because it will be read from other threads.