public boolean isOrderEqualOnFirstNFields(Ordering other, int n) { if (n > getNumberOfFields() || n > other.getNumberOfFields()) { throw new IndexOutOfBoundsException(); } for (int i = 0; i < n; i++) { final Order o = this.orders.get(i); if (o == Order.NONE || o == Order.ANY || o != other.orders.get(i)) { return false; } } return true; }
public boolean isOrderEqualOnFirstNFields(Ordering other, int n) { if (n > getNumberOfFields() || n > other.getNumberOfFields()) { throw new IndexOutOfBoundsException(); } for (int i = 0; i < n; i++) { final Order o = this.orders.get(i); if (o == Order.NONE || o == Order.ANY || o != other.orders.get(i)) { return false; } } return true; }
/** * Sets the sink to partition the records into ranges over the given ordering. * The bucket boundaries are determined using the given data distribution. * * @param partitionOrdering The record ordering over which to partition in ranges. * @param distribution The distribution to use for the range partitioning. */ public void setRangePartitioned(Ordering partitionOrdering, DataDistribution distribution) { if (partitionOrdering.getNumberOfFields() != distribution.getNumberOfFields()) { throw new IllegalArgumentException("The number of keys in the distribution must match number of ordered fields."); } // TODO: check compatibility of distribution and ordering (number and order of keys, key types, etc. // TODO: adapt partition ordering to data distribution (use prefix of ordering) this.partitionOrdering = partitionOrdering; this.distribution = distribution; }
/** * Sets the sink to partition the records into ranges over the given ordering. * The bucket boundaries are determined using the given data distribution. * * @param partitionOrdering The record ordering over which to partition in ranges. * @param distribution The distribution to use for the range partitioning. */ public void setRangePartitioned(Ordering partitionOrdering, DataDistribution distribution) { if (partitionOrdering.getNumberOfFields() != distribution.getNumberOfFields()) { throw new IllegalArgumentException("The number of keys in the distribution must match number of ordered fields."); } // TODO: check compatibility of distribution and ordering (number and order of keys, key types, etc. // TODO: adapt partition ordering to data distribution (use prefix of ordering) this.partitionOrdering = partitionOrdering; this.distribution = distribution; }
@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)); return l; }
@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)); return l; }
public boolean matchesOrderedPartitioning(Ordering o) { if (this.partitioning == PartitioningProperty.RANGE_PARTITIONED) { if (this.ordering.getNumberOfFields() > o.getNumberOfFields()) { return false; for (int i = 0; i < this.ordering.getNumberOfFields(); i++) { if (this.ordering.getFieldNumber(i) != o.getFieldNumber(i)) { return false;
public boolean matchesOrderedPartitioning(Ordering o) { if (this.partitioning == PartitioningProperty.RANGE_PARTITIONED) { if (this.ordering.getNumberOfFields() > o.getNumberOfFields()) { return false; for (int i = 0; i < this.ordering.getNumberOfFields(); i++) { if (this.ordering.getFieldNumber(i) != o.getFieldNumber(i)) { return false;
@Override 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; }
@Override 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; }
@Override 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; }
@Override 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; }
private void addOrderingToSchema(Ordering o, SparseKeySchema schema) throws ConflictingFieldTypeInfoException { for (int i = 0; i < o.getNumberOfFields(); i++) { Integer pos = o.getFieldNumber(i); Class<? extends Key<?>> type = o.getType(i); schema.addType(pos, type); } }
private void addOrderingToSchema(Ordering o, SparseKeySchema schema) throws ConflictingFieldTypeInfoException { for (int i = 0; i < o.getNumberOfFields(); i++) { Integer pos = o.getFieldNumber(i); Class<? extends Key<?>> type = o.getType(i); schema.addType(pos, type); } }
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 for (int i = 0; i < additionalOrderKeys.getNumberOfFields(); i++) { Integer field = additionalOrderKeys.getFieldNumber(i); Order order = additionalOrderKeys.getOrder(i); this.ordering.appendOrdering(field, additionalOrderKeys.getType(i), order); } } else { this.ordering = null; } }
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 for (int i = 0; i < additionalOrderKeys.getNumberOfFields(); i++) { Integer field = additionalOrderKeys.getFieldNumber(i); Order order = additionalOrderKeys.getOrder(i); this.ordering.appendOrdering(field, additionalOrderKeys.getType(i), order); } } else { this.ordering = null; } }
public GroupReduceWithCombineProperties(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 for (int i = 0; i < additionalOrderKeys.getNumberOfFields(); i++) { Integer field = additionalOrderKeys.getFieldNumber(i); Order order = additionalOrderKeys.getOrder(i); this.ordering.appendOrdering(field, additionalOrderKeys.getType(i), order); } } else { this.ordering = null; } }
public GroupReduceWithCombineProperties(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 for (int i = 0; i < additionalOrderKeys.getNumberOfFields(); i++) { Integer field = additionalOrderKeys.getFieldNumber(i); Order order = additionalOrderKeys.getOrder(i); this.ordering.appendOrdering(field, additionalOrderKeys.getType(i), order); } } else { this.ordering = null; } }
for (int i = 0; i < additionalOrdering1.getNumberOfFields(); i++) { Integer field = additionalOrdering1.getFieldNumber(i); Order order = additionalOrdering1.getOrder(i); for (int i = 0; i < additionalOrdering2.getNumberOfFields(); i++) { Integer field = additionalOrdering2.getFieldNumber(i); Order order = additionalOrdering2.getOrder(i);
for (int i = 0; i < additionalOrdering1.getNumberOfFields(); i++) { Integer field = additionalOrdering1.getFieldNumber(i); Order order = additionalOrdering1.getOrder(i); for (int i = 0; i < additionalOrdering2.getNumberOfFields(); i++) { Integer field = additionalOrdering2.getFieldNumber(i); Order order = additionalOrdering2.getOrder(i);