Package org.apache.flink.runtime.operators.util

Examples of org.apache.flink.runtime.operators.util.LocalStrategy


    if (this.localStrategies[inputNum] != null) {
      throw new IllegalStateException();
    }

    // now set up the local strategy
    final LocalStrategy localStrategy = this.config.getInputLocalStrategy(inputNum);
    if (localStrategy != null) {
      switch (localStrategy) {
      case NONE:
        // the input is as it is
        this.inputs[inputNum] = this.inputIterators[inputNum];
        break;
      case SORT:
        @SuppressWarnings({ "rawtypes", "unchecked" })
        UnilateralSortMerger<?> sorter = new UnilateralSortMerger(getMemoryManager(), getIOManager(),
          this.inputIterators[inputNum], this, this.inputSerializers[inputNum], getLocalStrategyComparator(inputNum),
          this.config.getRelativeMemoryInput(inputNum), this.config.getFilehandlesInput(inputNum),
          this.config.getSpillingThresholdInput(inputNum));
        // set the input to null such that it will be lazily fetched from the input strategy
        this.inputs[inputNum] = null;
        this.localStrategies[inputNum] = sorter;
        break;
      case COMBININGSORT:
        // sanity check this special case!
        // this still breaks a bit of the abstraction!
        // we should have nested configurations for the local strategies to solve that
        if (inputNum != 0) {
          throw new IllegalStateException("Performing combining sort outside a (group)reduce task!");
        }

        // instantiate ourselves a combiner. we should not use the stub, because the sort and the
        // subsequent (group)reduce would otherwise share it multi-threaded
        final Class<S> userCodeFunctionType = this.driver.getStubType();
        if (userCodeFunctionType == null) {
          throw new IllegalStateException("Performing combining sort outside a reduce task!");
        }
        final S localStub;
        try {
          localStub = initStub(userCodeFunctionType);
        } catch (Exception e) {
          throw new RuntimeException("Initializing the user code and the configuration failed" +
            e.getMessage() == null ? "." : ": " + e.getMessage(), e);
        }
       
        if (!(localStub instanceof FlatCombineFunction)) {
          throw new IllegalStateException("Performing combining sort outside a reduce task!");
        }

        @SuppressWarnings({ "rawtypes", "unchecked" })
        CombiningUnilateralSortMerger<?> cSorter = new CombiningUnilateralSortMerger(
          (FlatCombineFunction) localStub, getMemoryManager(), getIOManager(), this.inputIterators[inputNum],
          this, this.inputSerializers[inputNum], getLocalStrategyComparator(inputNum),
          this.config.getRelativeMemoryInput(inputNum), this.config.getFilehandlesInput(inputNum),
          this.config.getSpillingThresholdInput(inputNum));
        cSorter.setUdfConfiguration(this.config.getStubParameters());

        // set the input to null such that it will be lazily fetched from the input strategy
        this.inputs[inputNum] = null;
        this.localStrategies[inputNum] = cSorter;
        break;
      default:
        throw new Exception("Unrecognized local strategy provided: " + localStrategy.name());
      }
    } else {
      // no local strategy in the config
      this.inputs[inputNum] = this.inputIterators[inputNum];
    }
View Full Code Here

TOP

Related Classes of org.apache.flink.runtime.operators.util.LocalStrategy

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.