public JoinOperator(TransformationDescriptor<InputType0, Key> keyDescriptor0, TransformationDescriptor<InputType1, Key> keyDescriptor1, DataSetType<InputType0> inputType0, DataSetType<InputType1> inputType1) { super(inputType0, inputType1, JoinOperator.createOutputDataSetType(), true); this.keyDescriptor0 = keyDescriptor0; this.keyDescriptor1 = keyDescriptor1; }
/** * Copies an instance (exclusive of broadcasts). * * @param that that should be copied */ public JoinOperator(JoinOperator<InputType0, InputType1, Key> that) { super(that); this.keyDescriptor0 = that.getKeyDescriptor0(); this.keyDescriptor1 = that.getKeyDescriptor1(); }
@Override public Optional<CardinalityEstimator> createCardinalityEstimator( final int outputIndex, final Configuration configuration) { Validate.inclusiveBetween(0, this.getNumOutputs() - 1, outputIndex); // The current idea: We assume, we have a foreign-key like join // TODO: Find a better estimator. return Optional.of(new DefaultCardinalityEstimator( .5d, 2, this.isSupportingBroadcastInputs(), inputCards -> 3 * Math.max(inputCards[0], inputCards[1]) )); } }
new JoinOperator<>( Tuple2::getField0, Tuple2::getField0, Long.class ); rankJoin.at(epoch); rankJoin.setName(String.format("%s (join adjacencies and ranks)", operatorBaseName)); rankJoin.setCardinalityEstimator(0, new DefaultCardinalityEstimator( .99d, 2, false, longs -> longs[0] )); partialRankCreator.at(epoch); partialRankCreator.setName(String.format("%s (create partial ranks)", operatorBaseName)); rankJoin.connectTo(0, partialRankCreator, 0);
private SubplanPattern createSubplanPattern() { final OperatorPattern operatorPattern = new OperatorPattern<>( "join", new JoinOperator<>(null, null, DataSetType.none(), DataSetType.none()), false ); return SubplanPattern.createSingleton(operatorPattern); }
private SubplanPattern createSubplanPattern() { final OperatorPattern operatorPattern = new OperatorPattern<>( "join", new JoinOperator<>(null, null, DataSetType.none(), DataSetType.none()), false ); return SubplanPattern.createSingleton(operatorPattern); }
public JoinOperator(TransformationDescriptor<InputType0, Key> keyDescriptor0, TransformationDescriptor<InputType1, Key> keyDescriptor1) { super(DataSetType.createDefault(keyDescriptor0.getInputType()), DataSetType.createDefault(keyDescriptor1.getInputType()), JoinOperator.createOutputDataSetType(), true); this.keyDescriptor0 = keyDescriptor0; this.keyDescriptor1 = keyDescriptor1; } public JoinOperator(TransformationDescriptor<InputType0, Key> keyDescriptor0,