Class InferableFunction<InputT,OutputT>

java.lang.Object
org.apache.beam.sdk.transforms.InferableFunction<InputT,OutputT>
All Implemented Interfaces:
Serializable, HasDisplayData, ProcessFunction<InputT,OutputT>
Direct Known Subclasses:
SimpleFunction

public abstract class InferableFunction<InputT,OutputT> extends Object implements ProcessFunction<InputT,OutputT>, HasDisplayData
A ProcessFunction which is not a functional interface. Concrete subclasses allow us to infer type information, which in turn aids Coder inference.

See SimpleFunction for providing robust type information where a SerializableFunction is required.

See Also:
  • Constructor Details

  • Method Details

    • apply

      public OutputT apply(InputT input) throws Exception
      Description copied from interface: ProcessFunction
      Returns the result of invoking this function on the given input.
      Specified by:
      apply in interface ProcessFunction<InputT,OutputT>
      Throws:
      Exception
    • fromProcessFunctionWithOutputType

      public static <InputT, OutputT> InferableFunction<InputT,OutputT> fromProcessFunctionWithOutputType(ProcessFunction<InputT,OutputT> fn, TypeDescriptor<OutputT> outputType)
    • getInputTypeDescriptor

      public TypeDescriptor<InputT> getInputTypeDescriptor()
      Returns a TypeDescriptor capturing what is known statically about the input type of this InferableFunction instance's most-derived class.

      See getOutputTypeDescriptor() for more discussion.

    • getOutputTypeDescriptor

      public TypeDescriptor<OutputT> getOutputTypeDescriptor()
      Returns a TypeDescriptor capturing what is known statically about the output type of this InferableFunction instance's most-derived class.

      In the normal case of a concrete InferableFunction subclass with no generic type parameters of its own (including anonymous inner classes), this will be a complete non-generic type, which is good for choosing a default output Coder<OutputT> for the output PCollection<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: