Class AbstractPythonScalarFunctionOperator

  • All Implemented Interfaces:
    Serializable, org.apache.flink.api.common.state.CheckpointListener, org.apache.flink.streaming.api.operators.BoundedOneInput, org.apache.flink.streaming.api.operators.Input<org.apache.flink.table.data.RowData>, org.apache.flink.streaming.api.operators.KeyContext, org.apache.flink.streaming.api.operators.KeyContextHandler, org.apache.flink.streaming.api.operators.OneInputStreamOperator<org.apache.flink.table.data.RowData,​org.apache.flink.table.data.RowData>, org.apache.flink.streaming.api.operators.SetupableStreamOperator<org.apache.flink.table.data.RowData>, org.apache.flink.streaming.api.operators.StreamOperator<org.apache.flink.table.data.RowData>, org.apache.flink.streaming.api.operators.StreamOperatorStateHandler.CheckpointedStreamOperator
    Direct Known Subclasses:
    ArrowPythonScalarFunctionOperator, PythonScalarFunctionOperator

    @Internal
    public abstract class AbstractPythonScalarFunctionOperator
    extends AbstractStatelessFunctionOperator<org.apache.flink.table.data.RowData,​org.apache.flink.table.data.RowData,​org.apache.flink.table.data.RowData>
    Base class for all stream operators to execute Python ScalarFunctions. It executes the Python ScalarFunctions in separate Python execution environment.

    The inputs are assumed as the following format: {{{ +------------------+--------------+ | forwarded fields | extra fields | +------------------+--------------+ }}}.

    The Python UDFs may take input columns directly from the input row or the execution result of Java UDFs: 1) The input columns from the input row can be referred from the 'forwarded fields'; 2) The Java UDFs will be computed and the execution results can be referred from the 'extra fields'.

    The outputs will be as the following format: {{{ +------------------+-------------------------+ | forwarded fields | scalar function results | +------------------+-------------------------+ }}}.

    See Also:
    Serialized Form
    • Field Detail

      • scalarFunctions

        protected final org.apache.flink.table.functions.python.PythonFunctionInfo[] scalarFunctions
        The Python ScalarFunctions to be executed.
      • reuseJoinedRow

        protected transient org.apache.flink.table.data.utils.JoinedRowData reuseJoinedRow
        The JoinedRowData reused holding the execution result.
    • Constructor Detail

      • AbstractPythonScalarFunctionOperator

        public AbstractPythonScalarFunctionOperator​(org.apache.flink.configuration.Configuration config,
                                                    org.apache.flink.table.functions.python.PythonFunctionInfo[] scalarFunctions,
                                                    org.apache.flink.table.types.logical.RowType inputType,
                                                    org.apache.flink.table.types.logical.RowType udfInputType,
                                                    org.apache.flink.table.types.logical.RowType udfOutputType,
                                                    org.apache.flink.table.runtime.generated.GeneratedProjection udfInputGeneratedProjection,
                                                    org.apache.flink.table.runtime.generated.GeneratedProjection forwardedFieldGeneratedProjection)
    • Method Detail

      • open

        public void open()
                  throws Exception
        Specified by:
        open in interface org.apache.flink.streaming.api.operators.StreamOperator<org.apache.flink.table.data.RowData>
        Overrides:
        open in class AbstractStatelessFunctionOperator<org.apache.flink.table.data.RowData,​org.apache.flink.table.data.RowData,​org.apache.flink.table.data.RowData>
        Throws:
        Exception
      • bufferInput

        public void bufferInput​(org.apache.flink.table.data.RowData input)
        Description copied from class: AbstractStatelessFunctionOperator
        Buffers the specified input, it will be used to construct the operator result together with the user-defined function execution result.
        Specified by:
        bufferInput in class AbstractStatelessFunctionOperator<org.apache.flink.table.data.RowData,​org.apache.flink.table.data.RowData,​org.apache.flink.table.data.RowData>
      • getFunctionInput

        public org.apache.flink.table.data.RowData getFunctionInput​(org.apache.flink.table.data.RowData element)
        Specified by:
        getFunctionInput in class AbstractStatelessFunctionOperator<org.apache.flink.table.data.RowData,​org.apache.flink.table.data.RowData,​org.apache.flink.table.data.RowData>