Example #1
0
  private static <I1, I2, K, OUT>
      PlanLeftUnwrappingCoGroupOperator<I1, I2, OUT, K> translateSelectorFunctionCoGroupLeft(
          SelectorFunctionKeys<I1, ?> rawKeys1,
          int[] logicalKeyPositions2,
          CoGroupFunction<I1, I2, OUT> function,
          TypeInformation<I2> inputType2,
          TypeInformation<OUT> outputType,
          String name,
          Operator<I1> input1,
          Operator<I2> input2) {
    if (!inputType2.isTupleType()) {
      throw new InvalidParameterException("Should not happen.");
    }

    @SuppressWarnings("unchecked")
    final SelectorFunctionKeys<I1, K> keys1 = (SelectorFunctionKeys<I1, K>) rawKeys1;
    final TypeInformation<Tuple2<K, I1>> typeInfoWithKey1 = KeyFunctions.createTypeWithKey(keys1);
    final Operator<Tuple2<K, I1>> keyedInput1 = KeyFunctions.appendKeyExtractor(input1, keys1);

    final PlanLeftUnwrappingCoGroupOperator<I1, I2, OUT, K> cogroup =
        new PlanLeftUnwrappingCoGroupOperator<>(
            function, keys1, logicalKeyPositions2, name, outputType, typeInfoWithKey1, inputType2);

    cogroup.setFirstInput(keyedInput1);
    cogroup.setSecondInput(input2);

    return cogroup;
  }
Example #2
0
  private static <I1, I2, K, OUT>
      PlanBothUnwrappingCoGroupOperator<I1, I2, OUT, K> translateSelectorFunctionCoGroup(
          SelectorFunctionKeys<I1, ?> rawKeys1,
          SelectorFunctionKeys<I2, ?> rawKeys2,
          CoGroupFunction<I1, I2, OUT> function,
          TypeInformation<OUT> outputType,
          String name,
          Operator<I1> input1,
          Operator<I2> input2) {
    @SuppressWarnings("unchecked")
    final SelectorFunctionKeys<I1, K> keys1 = (SelectorFunctionKeys<I1, K>) rawKeys1;
    @SuppressWarnings("unchecked")
    final SelectorFunctionKeys<I2, K> keys2 = (SelectorFunctionKeys<I2, K>) rawKeys2;

    final TypeInformation<Tuple2<K, I1>> typeInfoWithKey1 = KeyFunctions.createTypeWithKey(keys1);
    final TypeInformation<Tuple2<K, I2>> typeInfoWithKey2 = KeyFunctions.createTypeWithKey(keys2);

    final Operator<Tuple2<K, I1>> keyedInput1 = KeyFunctions.appendKeyExtractor(input1, keys1);
    final Operator<Tuple2<K, I2>> keyedInput2 = KeyFunctions.appendKeyExtractor(input2, keys2);

    final PlanBothUnwrappingCoGroupOperator<I1, I2, OUT, K> cogroup =
        new PlanBothUnwrappingCoGroupOperator<>(
            function, keys1, keys2, name, outputType, typeInfoWithKey1, typeInfoWithKey2);

    cogroup.setFirstInput(keyedInput1);
    cogroup.setSecondInput(keyedInput2);

    return cogroup;
  }