Package eu.stratosphere.api.common.operators

Examples of eu.stratosphere.api.common.operators.Ordering


  @Override
  public void computeInterestingPropertiesForInputs(CostEstimator estimator) {
    final InterestingProperties iProps = new InterestingProperties();
   
    {
      final Ordering partitioning = getPactContract().getPartitionOrdering();
      final DataDistribution dataDist = getPactContract().getDataDistribution();
      final RequestedGlobalProperties partitioningProps = new RequestedGlobalProperties();
      if (partitioning != null) {
        if(dataDist != null) {
          partitioningProps.setRangePartitioned(partitioning, dataDist);
        } else {
          partitioningProps.setRangePartitioned(partitioning);
        }
        iProps.addGlobalProperties(partitioningProps);
      }
      iProps.addGlobalProperties(partitioningProps);
    }
   
    {
      final Ordering localOrder = getPactContract().getLocalOrder();
      final RequestedLocalProperties orderProps = new RequestedLocalProperties();
      if (localOrder != null) {
        orderProps.setOrdering(localOrder);
      }
      iProps.addLocalProperties(orderProps);
View Full Code Here


   * @return True, if the resulting properties are non trivial.
   */
  public LocalProperties filterByNodesConstantSet(OptimizerNode node, int input)
  {
    // check, whether the local order is preserved
    Ordering no = this.ordering;
    FieldList ngf = this.groupedFields;
    Set<FieldSet> nuf = this.uniqueFields;
   
    if (this.ordering != null) {
      final FieldList involvedIndexes = this.ordering.getInvolvedIndexes();
      for (int i = 0; i < involvedIndexes.size(); i++) {
        if (!node.isFieldConstant(input, involvedIndexes.get(i))) {
          if (i == 0) {
            no = null;
            ngf = null;
          } else {
            no = this.ordering.createNewOrderingUpToIndex(i);
            ngf = no.getInvolvedIndexes();
          }
          break;
        }
      }
    } else if (this.groupedFields != null) {
View Full Code Here

    } else {
      useCombiner = isCombineable();
    }
   
    // check if we can work with a grouping (simple reducer), or if we need ordering because of a group order
    Ordering groupOrder = null;
    if (getPactContract() instanceof GroupReduceOperatorBase) {
      groupOrder = ((GroupReduceOperatorBase<?, ?, ?>) getPactContract()).getGroupOrder();
      if (groupOrder != null && groupOrder.getNumberOfFields() == 0) {
        groupOrder = null;
      }
    }
   
    OperatorDescriptorSingle props = useCombiner ?
View Full Code Here

  public CoGroupDescriptor(FieldList keys1, FieldList keys2, Ordering additionalOrdering1, Ordering additionalOrdering2) {
    super(keys1, keys2);
   
    // if we have an additional ordering, construct the ordering to have primarily the grouping fields
    if (additionalOrdering1 != null) {
      this.ordering1 = new Ordering();
      for (Integer key : this.keys1) {
        this.ordering1.appendOrdering(key, null, Order.ANY);
      }
   
      // and next the additional order fields
      for (int i = 0; i < additionalOrdering1.getNumberOfFields(); i++) {
        Integer field = additionalOrdering1.getFieldNumber(i);
        Order order = additionalOrdering1.getOrder(i);
        this.ordering1.appendOrdering(field, additionalOrdering1.getType(i), order);
      }
    } else {
      this.ordering1 = Utils.createOrdering(this.keys1);
    }
   
    // if we have an additional ordering, construct the ordering to have primarily the grouping fields
    if (additionalOrdering2 != null) {
      this.ordering2 = new Ordering();
      for (Integer key : this.keys2) {
        this.ordering2.appendOrdering(key, null, Order.ANY);
      }
   
      // and next the additional order fields
View Full Code Here

  public boolean areCoFulfilled(RequestedLocalProperties requested1, RequestedLocalProperties requested2,
      LocalProperties produced1, LocalProperties produced2)
  {
    int numRelevantFields = this.keys1.size();
   
    Ordering prod1 = produced1.getOrdering();
    Ordering prod2 = produced2.getOrdering();
   
    if (prod1 == null || prod2 == null || prod1.getNumberOfFields() < numRelevantFields ||
        prod2.getNumberOfFields() < prod2.getNumberOfFields())
    {
      throw new CompilerException("The given properties do not meet this operators requirements.");
    }
     
    for (int i = 0; i < numRelevantFields; i++) {
      if (prod1.getOrder(i) != prod2.getOrder(i)) {
        return false;
      }
    }
    return true;
  }
View Full Code Here

  public GroupReduceProperties(FieldSet groupKeys, Ordering additionalOrderKeys) {
    super(groupKeys);
   
    // if we have an additional ordering, construct the ordering to have primarily the grouping fields
    if (additionalOrderKeys != null) {
      this.ordering = new Ordering();
      for (Integer key : this.keyList) {
        this.ordering.appendOrdering(key, null, Order.ANY);
      }
   
      // and next the additional order fields
View Full Code Here

    return "CoGroup";
  }

  @Override
  protected List<OperatorDescriptorDual> getPossibleProperties() {
    Ordering groupOrder1 = null;
    Ordering groupOrder2 = null;
   
    CoGroupOperatorBase<?, ?, ?, ?> cgc = getPactContract();
    groupOrder1 = cgc.getGroupOrderForInputOne();
    groupOrder2 = cgc.getGroupOrderForInputTwo();
     
    if (groupOrder1 != null && groupOrder1.getNumberOfFields() == 0) {
      groupOrder1 = null;
    }
    if (groupOrder2 != null && groupOrder2.getNumberOfFields() == 0) {
      groupOrder2 = null;
    }
   
    List<OperatorDescriptorDual> l = new ArrayList<OperatorDescriptorDual>(1);
    l.add(new CoGroupDescriptor(this.keys1, this.keys2, groupOrder1, groupOrder2));
View Full Code Here

  public boolean areCoFulfilled(RequestedLocalProperties requested1, RequestedLocalProperties requested2,
      LocalProperties produced1, LocalProperties produced2)
  {
    int numRelevantFields = this.keys1.size();
   
    Ordering prod1 = produced1.getOrdering();
    Ordering prod2 = produced2.getOrdering();
   
    if (prod1 == null || prod2 == null || prod1.getNumberOfFields() < numRelevantFields ||
        prod2.getNumberOfFields() < prod2.getNumberOfFields())
    {
      throw new CompilerException("The given properties do not meet this operators requirements.");
    }
     
    for (int i = 0; i < numRelevantFields; i++) {
      if (prod1.getOrder(i) != prod2.getOrder(i)) {
        return false;
      }
    }
    return true;
  }
View Full Code Here

      return new FieldList(cols);
    }
  }
 
  public static final Ordering createOrdering(FieldList fields, boolean[] directions) {
    final Ordering o = new Ordering();
    for (int i = 0; i < fields.size(); i++) {
      o.appendOrdering(fields.get(i), null, directions == null || directions[i] ? Order.ASCENDING : Order.DESCENDING);
    }
    return o;
  }
View Full Code Here

    }
    return o;
  }
 
  public static final Ordering createOrdering(FieldList fields) {
    final Ordering o = new Ordering();
    for (int i = 0; i < fields.size(); i++) {
      o.appendOrdering(fields.get(i), null, Order.ANY);
    }
    return o;
  }
View Full Code Here

TOP

Related Classes of eu.stratosphere.api.common.operators.Ordering

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.