Class CrossOperator.ProjectCross<I1,​I2,​OUT extends org.apache.flink.api.java.tuple.Tuple>

  • Type Parameters:
    I1 - The type of the first input DataSet of the Cross transformation.
    I2 - The type of the second input DataSet of the Cross transformation.
    OUT - The type of the result of the Cross transformation.
    All Implemented Interfaces:
    UdfOperator<CrossOperator<I1,​I2,​OUT>>
    Enclosing class:
    CrossOperator<I1,​I2,​OUT>

    @Public
    public static final class CrossOperator.ProjectCross<I1,​I2,​OUT extends org.apache.flink.api.java.tuple.Tuple>
    extends CrossOperator<I1,​I2,​OUT>
    A Cross transformation that projects crossing elements or fields of crossing Tuples into result Tuples.

    It also represents the DataSet that is the result of a Cross transformation.

    See Also:
    Tuple, DataSet
    • Constructor Detail

      • ProjectCross

        protected ProjectCross​(DataSet<I1> input1,
                               DataSet<I2> input2,
                               int[] fields,
                               boolean[] isFromFirst,
                               org.apache.flink.api.java.typeutils.TupleTypeInfo<OUT> returnType,
                               org.apache.flink.api.common.operators.base.CrossOperatorBase.CrossHint hint)
      • ProjectCross

        protected ProjectCross​(DataSet<I1> input1,
                               DataSet<I2> input2,
                               int[] fields,
                               boolean[] isFromFirst,
                               org.apache.flink.api.java.typeutils.TupleTypeInfo<OUT> returnType,
                               CrossOperator.CrossProjection<I1,​I2> crossProjection,
                               org.apache.flink.api.common.operators.base.CrossOperatorBase.CrossHint hint)
    • Method Detail

      • projectFirst

        public <OUT extends org.apache.flink.api.java.tuple.Tuple> CrossOperator.ProjectCross<I1,​I2,​OUT> projectFirst​(int... firstFieldIndexes)
        Continues a ProjectCross transformation and adds fields of the first cross input to the projection.

        If the first cross input is a Tuple DataSet, fields can be selected by their index. If the first cross input is not a Tuple DataSet, no parameters should be passed.

        Additional fields of the first and second input can be added by chaining the method calls of projectFirst(int...) and projectSecond(int...).

        Note: With the current implementation, the Project transformation loses type information.

        Parameters:
        firstFieldIndexes - If the first input is a Tuple DataSet, the indexes of the selected fields. For a non-Tuple DataSet, do not provide parameters. The order of fields in the output tuple is defined by to the order of field indexes.
        Returns:
        A ProjectCross which represents the projected cross result.
        See Also:
        Tuple, DataSet, CrossOperator.ProjectCross
      • projectSecond

        public <OUT extends org.apache.flink.api.java.tuple.Tuple> CrossOperator.ProjectCross<I1,​I2,​OUT> projectSecond​(int... secondFieldIndexes)
        Continues a ProjectCross transformation and adds fields of the second cross input to the projection.

        If the second cross input is a Tuple DataSet, fields can be selected by their index. If the second cross input is not a Tuple DataSet, no parameters should be passed.

        Additional fields of the first and second input can be added by chaining the method calls of projectFirst(int...) and projectSecond(int...).

        Note: With the current implementation, the Project transformation loses type information.

        Parameters:
        secondFieldIndexes - If the second input is a Tuple DataSet, the indexes of the selected fields. For a non-Tuple DataSet, do not provide parameters. The order of fields in the output tuple is defined by to the order of field indexes.
        Returns:
        A ProjectCross which represents the projected cross result.
        See Also:
        Tuple, DataSet, CrossOperator.ProjectCross
      • types

        @Deprecated
        @PublicEvolving
        public <OUT extends org.apache.flink.api.java.tuple.Tuple> CrossOperator<I1,​I2,​OUT> types​(Class<?>... types)
        Deprecated.
        Deprecated method only kept for compatibility.
      • withForwardedFieldsFirst

        public CrossOperator<I1,​I2,​OUT> withForwardedFieldsFirst​(String... forwardedFieldsFirst)
        Description copied from class: TwoInputUdfOperator
        Adds semantic information about forwarded fields of the first input of the user-defined function. The forwarded fields information declares fields which are never modified by the function and which are forwarded at the same position to the output or unchanged copied to another position in the output.

        Fields that are forwarded at the same position are specified by their position. The specified position must be valid for the input and output data type and have the same type. For example withForwardedFieldsFirst("f2") declares that the third field of a Java input tuple from the first input is copied to the third field of an output tuple.

        Fields which are unchanged copied from the first input to another position in the output are declared by specifying the source field reference in the first input and the target field reference in the output. withForwardedFieldsFirst("f0->f2") denotes that the first field of the first input Java tuple is unchanged copied to the third field of the Java output tuple. When using a wildcard ("*") ensure that the number of declared fields and their types in first input and output type match.

        Multiple forwarded fields can be annotated in one (withForwardedFieldsFirst("f2; f3->f0; f4")) or separate Strings (withForwardedFieldsFirst("f2", "f3->f0", "f4")). Please refer to the JavaDoc of Function or Flink's documentation for details on field references such as nested fields and wildcard.

        It is not possible to override existing semantic information about forwarded fields of the first input which was for example added by a FunctionAnnotation.ForwardedFieldsFirst class annotation.

        NOTE: Adding semantic information for functions is optional! If used correctly, semantic information can help the Flink optimizer to generate more efficient execution plans. However, incorrect semantic information can cause the optimizer to generate incorrect execution plans which compute wrong results! So be careful when adding semantic information.

        Overrides:
        withForwardedFieldsFirst in class TwoInputUdfOperator<I1,​I2,​OUT extends org.apache.flink.api.java.tuple.Tuple,​CrossOperator<I1,​I2,​OUT extends org.apache.flink.api.java.tuple.Tuple>>
        Parameters:
        forwardedFieldsFirst - A list of forwarded field expressions for the first input of the function.
        Returns:
        This operator with annotated forwarded field information.
        See Also:
        FunctionAnnotation, FunctionAnnotation.ForwardedFieldsFirst
      • withForwardedFieldsSecond

        public CrossOperator<I1,​I2,​OUT> withForwardedFieldsSecond​(String... forwardedFieldsSecond)
        Description copied from class: TwoInputUdfOperator
        Adds semantic information about forwarded fields of the second input of the user-defined function. The forwarded fields information declares fields which are never modified by the function and which are forwarded at the same position to the output or unchanged copied to another position in the output.

        Fields that are forwarded at the same position are specified by their position. The specified position must be valid for the input and output data type and have the same type. For example withForwardedFieldsSecond("f2") declares that the third field of a Java input tuple from the second input is copied to the third field of an output tuple.

        Fields which are unchanged copied from the second input to another position in the output are declared by specifying the source field reference in the second input and the target field reference in the output. withForwardedFieldsSecond("f0->f2") denotes that the first field of the second input Java tuple is unchanged copied to the third field of the Java output tuple. When using a wildcard ("*") ensure that the number of declared fields and their types in second input and output type match.

        Multiple forwarded fields can be annotated in one (withForwardedFieldsSecond("f2; f3->f0; f4")) or separate Strings (withForwardedFieldsSecond("f2", "f3->f0", "f4")). Please refer to the JavaDoc of Function or Flink's documentation for details on field references such as nested fields and wildcard.

        It is not possible to override existing semantic information about forwarded fields of the second input which was for example added by a FunctionAnnotation.ForwardedFieldsSecond class annotation.

        NOTE: Adding semantic information for functions is optional! If used correctly, semantic information can help the Flink optimizer to generate more efficient execution plans. However, incorrect semantic information can cause the optimizer to generate incorrect execution plans which compute wrong results! So be careful when adding semantic information.

        Overrides:
        withForwardedFieldsSecond in class TwoInputUdfOperator<I1,​I2,​OUT extends org.apache.flink.api.java.tuple.Tuple,​CrossOperator<I1,​I2,​OUT extends org.apache.flink.api.java.tuple.Tuple>>
        Parameters:
        forwardedFieldsSecond - A list of forwarded field expressions for the second input of the function.
        Returns:
        This operator with annotated forwarded field information.
        See Also:
        FunctionAnnotation, FunctionAnnotation.ForwardedFieldsSecond