Join(String name, Flow flow, Dataset<LEFT> left, Dataset<RIGHT> right, UnaryFunction<LEFT, KEY> leftKeyExtractor, UnaryFunction<RIGHT, KEY> rightKeyExtractor, @Nullable Class<KEY> keyClass, BinaryFunctor<LEFT, RIGHT, OUT> functor, Type type, @Nullable Windowing<Either<LEFT, RIGHT>, W> windowing, Set<OutputHint> outputHints) { super(name, flow, windowing, (Either<LEFT, RIGHT> elem) -> { if (elem.isLeft()) { return leftKeyExtractor.apply(elem.left()); } return rightKeyExtractor.apply(elem.right()); }); this.left = left; this.right = right; this.leftKeyExtractor = leftKeyExtractor; this.rightKeyExtractor = rightKeyExtractor; this.keyClass = keyClass; this.functor = functor; @SuppressWarnings("unchecked") Dataset<Pair<KEY, OUT>> output = createOutput((Dataset) left, outputHints); this.output = output; this.type = type; }
Join(String name, Flow flow, Dataset<LEFT> left, Dataset<RIGHT> right, UnaryFunction<LEFT, KEY> leftKeyExtractor, UnaryFunction<RIGHT, KEY> rightKeyExtractor, @Nullable Class<KEY> keyClass, BinaryFunctor<LEFT, RIGHT, OUT> functor, Type type, @Nullable Windowing<Either<LEFT, RIGHT>, W> windowing, Set<OutputHint> outputHints) { super(name, flow, windowing, (Either<LEFT, RIGHT> elem) -> { if (elem.isLeft()) { return leftKeyExtractor.apply(elem.left()); } return rightKeyExtractor.apply(elem.right()); }); this.left = left; this.right = right; this.leftKeyExtractor = leftKeyExtractor; this.rightKeyExtractor = rightKeyExtractor; this.keyClass = keyClass; this.functor = functor; @SuppressWarnings("unchecked") Dataset<Pair<KEY, OUT>> output = createOutput((Dataset) left, outputHints); this.output = output; this.type = type; }