Class DeferredCompositeOperator

  • All Implemented Interfaces:
    LogicalOperator
    Direct Known Subclasses:
    AbstractDeferredRecordOperator, ErrorSink, ErrorSource, ForceStaging, MergeModel, SimulatePartitions, UnionAll

    public abstract class DeferredCompositeOperator
    extends StreamingOperator
    For rare use cases; implementors should use CompositeOperator whenever possible!

    Similar to CompositeOperator in that this is composed of sub-operators. The key distinction, though, is that composition is deferred until execution time such that compose(DeferredCompositionContext) is invoked on a per-partition basis. Thus, subclasses of this class control input partitioning and output partitioning declaration. Beware that input partitioning requirements effectively override those that the components may have declared by-default, thus it is preferable to use CompositeOperator if possible. In addition be aware of the following restrictions:

    1. DeferredCompositeOperator must not contain any iterative operators
    2. DeferredCompositeOperator must not contain any operators that force staging
    3. If any sub-operators declare metadata requirements they are treated as assertions (rather than being automatically fulfilled by the framework). Thus, it is the responsibility of DeferredCompositeOperator to ensure than any metadata requirements are fulfilled.