@Documented
@Retention(value=RUNTIME)
@Target(value=METHOD)
public static @interface DoFn.ProcessElement
DoFn must have
a method with this annotation.
The signature of this method must satisfy the following constraints:
DoFn.ProcessContext.
RestrictionTracker, then it is a splittable DoFn subject to the
separate requirements described below. Items below are assuming this is not a splittable
DoFn.
BoundedWindow then it will
be passed the window of the current element. When applied by ParDo the subtype
of BoundedWindow must match the type of windows on the input PCollection.
If the window is not accessed a runner may perform additional optimizations.
void.
A DoFn is splittable if its DoFn.ProcessElement method has a parameter
whose type is a subtype of RestrictionTracker. This is an advanced feature and an
overwhelming majority of users will never need to write a splittable DoFn. Right now
the implementation of this feature is in progress and it's not ready for any use.
See the proposal for an overview of the involved concepts (splittable DoFn, restriction, restriction tracker).
If a DoFn is splittable, the following constraints must be respected:
DoFn.GetInitialRestriction method.
DoFn.SplitRestriction method.
DoFn.NewTracker method returning the same type as the type of
the RestrictionTracker argument of DoFn.ProcessElement, which in turn must be a
subtype of RestrictionTracker<R> where R is the restriction type returned
by DoFn.GetInitialRestriction. This method is optional in case the restriction type
returned by DoFn.GetInitialRestriction implements HasDefaultTracker.
DoFn.GetRestrictionCoder method.
DoFn.ProcessElement method must not use any extra context parameters, such as
BoundedWindow.
DoFn itself may be annotated with DoFn.BoundedPerElement or
DoFn.UnboundedPerElement, but not both at the same time. If it's not annotated with
either of these, it's assumed to be DoFn.BoundedPerElement.
A non-splittable DoFn must not define any of these methods.
More documentation will be added when the feature becomes ready for general usage.