public Operator createReplacementSubplan(SubplanMatch subplanMatch, int epoch) { final Operator replacementSubplan = this.translate(subplanMatch, epoch); this.checkSanity(subplanMatch, replacementSubplan); this.copyNames(subplanMatch, replacementSubplan); return replacementSubplan; }
/** * Creates a new instance that matches a graph of operator patterns. * * @param inputOperatorPattern the only operator pattern that has inputs wrt. the subplan pattern * @param outputOperatorPattern the only operator pattern that has outputs wrt. the subplan pattern * @return the new instance */ public static final SubplanPattern fromOperatorPatterns(OperatorPattern inputOperatorPattern, OperatorPattern outputOperatorPattern) { return new SubplanPattern(inputOperatorPattern, outputOperatorPattern); }
/** * Creates a new instance. */ private SubplanPattern(OperatorPattern inputPattern, OperatorPattern outputPattern) { super(inputPattern.getAllInputs(), outputPattern.getAllOutputs(), false); this.inputPattern = inputPattern; this.outputPattern = outputPattern; }
private SubplanPattern createSubplanPattern() { final OperatorPattern operatorPattern = new OperatorPattern( "source", new org.qcri.rheem.basic.operators.TextFileSource((String) null), false ); return SubplanPattern.createSingleton(operatorPattern); }
private SubplanPattern createSubplanPattern() { final OperatorPattern<MapOperator<Record, Record>> operatorPattern = new OperatorPattern<>( "projection", new MapOperator<>(null, Record.class, Record.class), false ) .withAdditionalTest(op -> op.getFunctionDescriptor() instanceof ProjectionDescriptor) .withAdditionalTest(op -> op.getNumInputs() == 1); // No broadcasts. return SubplanPattern.createSingleton(operatorPattern); }
private ReplacementSubplanFactory createReplacementFactory() { return new ReplacementSubplanFactory.OfSingleOperators<>(this::createLoopOperatorSubplan); }
/** * Test whether this pattern matches a given operator. * * @param operator the operator to match or {@code null}, which represents the absence of an operator to match * @return whether the operator matches */ @SuppressWarnings("unchecked") public OperatorMatch match(Operator operator) { if (operator == null) return null; // Only match by the class so far. if (this.matchOperatorClass(operator) && this.matchSlots(operator) && this.matchAdditionalTests((T) operator)) { this.checkSanity(operator); return new OperatorMatch(this, operator); } return null; }
/** * Creates a new instance that matches only a single operator. * * @param operatorPattern the only operator pattern * @return the new instance */ public static final SubplanPattern createSingleton(OperatorPattern operatorPattern) { return fromOperatorPatterns(operatorPattern, operatorPattern); }
/** * Try to match the given operator pattern.. * * @param operator the operator that should be matched with the operator pattern */ private void attemptMatchFrom(Operator operator, InputSlot<?> fromInputSlot, OutputSlot<?> fromOutputSlot) { Validate.isTrue(fromInputSlot == null, "Cannot handle downstream traversals."); // Try to make a match starting from the currently visited operator. final SubplanMatch subplanMatch = new SubplanMatch(SubplanPattern.this); this.match(SubplanPattern.this.outputPattern, operator, fromOutputSlot, subplanMatch); }
public OperatorMatch getOutputMatch() { final String name = this.pattern.getOutputPattern().getName(); return this.operatorMatches.get(name); }
public OperatorMatch getInputMatch() { final String name = this.pattern.getInputPattern().getName(); return this.operatorMatches.get(name); }
private SubplanPattern createPattern() { return SubplanPattern.createSingleton(new OperatorPattern<>( "pageRank", new PageRankOperator(1), false )); }
private ReplacementSubplanFactory createReplacementFactory() { return new ReplacementSubplanFactory.OfSingleOperators<>(this::createPageRankSubplan); }
private SubplanPattern createSubplanPattern() { final OperatorPattern operatorPattern = new OperatorPattern<>( "pageRank", new PageRankOperator(1), false ); return SubplanPattern.createSingleton(operatorPattern); }
@SuppressWarnings("unchecked") private SubplanPattern createSubplanPattern() { final OperatorPattern operatorPattern = new OperatorPattern( "pageRank", new PageRankOperator(1), false); return SubplanPattern.createSingleton(operatorPattern); }
private SubplanPattern createSubplanPattern() { final OperatorPattern operatorPattern = new OperatorPattern<>( "pageRank", new PageRankOperator(1), false ); return SubplanPattern.createSingleton(operatorPattern); }
private SubplanPattern createSubplanPattern() { final OperatorPattern operatorPattern = new OperatorPattern( "source", new TextFileSource("", null), false ); return SubplanPattern.createSingleton(operatorPattern); }
private SubplanPattern createSubplanPattern() { final OperatorPattern operatorPattern = new OperatorPattern( "repeat", new RepeatOperator<>(1, DataSetType.none()), false ); return SubplanPattern.createSingleton(operatorPattern); }
private SubplanPattern createSubplanPattern() { final OperatorPattern operatorPattern = new OperatorPattern( "flatMap", new FlatMapOperator<>(null, DataSetType.none(), DataSetType.none()), false); return SubplanPattern.createSingleton(operatorPattern); }