Java Code Examples for org.apache.flink.optimizer.dataproperties.RequestedGlobalProperties#setHashPartitioned()

The following examples show how to use org.apache.flink.optimizer.dataproperties.RequestedGlobalProperties#setHashPartitioned() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: PartitionNode.java    From Flink-CEPplus with Apache License 2.0 6 votes vote down vote up
@Override
protected List<RequestedGlobalProperties> createPossibleGlobalProperties() {
	RequestedGlobalProperties rgps = new RequestedGlobalProperties();
	
	switch (this.pMethod) {
	case HASH:
		rgps.setHashPartitioned(this.keys);
		break;
	case REBALANCE:
		rgps.setForceRebalancing();
		break;
	case CUSTOM:
		rgps.setCustomPartitioned(this.keys, this.customPartitioner);
		break;
	case RANGE:
		rgps.setRangePartitioned(ordering, distribution);
		break;
	default:
		throw new IllegalArgumentException("Invalid partition method");
	}
	
	return Collections.singletonList(rgps);
}
 
Example 2
Source File: PartitionNode.java    From flink with Apache License 2.0 6 votes vote down vote up
@Override
protected List<RequestedGlobalProperties> createPossibleGlobalProperties() {
	RequestedGlobalProperties rgps = new RequestedGlobalProperties();
	
	switch (this.pMethod) {
	case HASH:
		rgps.setHashPartitioned(this.keys);
		break;
	case REBALANCE:
		rgps.setForceRebalancing();
		break;
	case CUSTOM:
		rgps.setCustomPartitioned(this.keys, this.customPartitioner);
		break;
	case RANGE:
		rgps.setRangePartitioned(ordering, distribution);
		break;
	default:
		throw new IllegalArgumentException("Invalid partition method");
	}
	
	return Collections.singletonList(rgps);
}
 
Example 3
Source File: PartitionNode.java    From flink with Apache License 2.0 6 votes vote down vote up
@Override
protected List<RequestedGlobalProperties> createPossibleGlobalProperties() {
	RequestedGlobalProperties rgps = new RequestedGlobalProperties();
	
	switch (this.pMethod) {
	case HASH:
		rgps.setHashPartitioned(this.keys);
		break;
	case REBALANCE:
		rgps.setForceRebalancing();
		break;
	case CUSTOM:
		rgps.setCustomPartitioned(this.keys, this.customPartitioner);
		break;
	case RANGE:
		rgps.setRangePartitioned(ordering, distribution);
		break;
	default:
		throw new IllegalArgumentException("Invalid partition method");
	}
	
	return Collections.singletonList(rgps);
}
 
Example 4
Source File: CoGroupDescriptor.java    From Flink-CEPplus with Apache License 2.0 5 votes vote down vote up
@Override
protected List<GlobalPropertiesPair> createPossibleGlobalProperties() {

	if (this.customPartitioner == null) {

		// we accept compatible partitionings of any type
		RequestedGlobalProperties partitioned_left_any = new RequestedGlobalProperties();
		RequestedGlobalProperties partitioned_right_any = new RequestedGlobalProperties();
		partitioned_left_any.setAnyPartitioning(this.keys1);
		partitioned_right_any.setAnyPartitioning(this.keys2);

		// add strict hash partitioning of both inputs on their full key sets
		RequestedGlobalProperties partitioned_left_hash = new RequestedGlobalProperties();
		RequestedGlobalProperties partitioned_right_hash = new RequestedGlobalProperties();
		partitioned_left_hash.setHashPartitioned(this.keys1);
		partitioned_right_hash.setHashPartitioned(this.keys2);

		return Arrays.asList(new GlobalPropertiesPair(partitioned_left_any, partitioned_right_any),
				new GlobalPropertiesPair(partitioned_left_hash, partitioned_right_hash));
	}
	else {
		RequestedGlobalProperties partitioned_left = new RequestedGlobalProperties();
		partitioned_left.setCustomPartitioned(this.keys1, this.customPartitioner);

		RequestedGlobalProperties partitioned_right = new RequestedGlobalProperties();
		partitioned_right.setCustomPartitioned(this.keys2, this.customPartitioner);

		return Collections.singletonList(new GlobalPropertiesPair(partitioned_left, partitioned_right));
	}
}
 
Example 5
Source File: CoGroupRawDescriptor.java    From Flink-CEPplus with Apache License 2.0 5 votes vote down vote up
@Override
protected List<OperatorDescriptorDual.GlobalPropertiesPair> createPossibleGlobalProperties() {
	RequestedGlobalProperties partitioned1 = new RequestedGlobalProperties();
	partitioned1.setHashPartitioned(this.keys1);
	RequestedGlobalProperties partitioned2 = new RequestedGlobalProperties();
	partitioned2.setHashPartitioned(this.keys2);
	return Collections.singletonList(new OperatorDescriptorDual.GlobalPropertiesPair(partitioned1, partitioned2));
}
 
Example 6
Source File: CoGroupRawDescriptor.java    From flink with Apache License 2.0 5 votes vote down vote up
@Override
protected List<OperatorDescriptorDual.GlobalPropertiesPair> createPossibleGlobalProperties() {
	RequestedGlobalProperties partitioned1 = new RequestedGlobalProperties();
	partitioned1.setHashPartitioned(this.keys1);
	RequestedGlobalProperties partitioned2 = new RequestedGlobalProperties();
	partitioned2.setHashPartitioned(this.keys2);
	return Collections.singletonList(new OperatorDescriptorDual.GlobalPropertiesPair(partitioned1, partitioned2));
}
 
Example 7
Source File: CoGroupDescriptor.java    From flink with Apache License 2.0 5 votes vote down vote up
@Override
protected List<GlobalPropertiesPair> createPossibleGlobalProperties() {

	if (this.customPartitioner == null) {

		// we accept compatible partitionings of any type
		RequestedGlobalProperties partitioned_left_any = new RequestedGlobalProperties();
		RequestedGlobalProperties partitioned_right_any = new RequestedGlobalProperties();
		partitioned_left_any.setAnyPartitioning(this.keys1);
		partitioned_right_any.setAnyPartitioning(this.keys2);

		// add strict hash partitioning of both inputs on their full key sets
		RequestedGlobalProperties partitioned_left_hash = new RequestedGlobalProperties();
		RequestedGlobalProperties partitioned_right_hash = new RequestedGlobalProperties();
		partitioned_left_hash.setHashPartitioned(this.keys1);
		partitioned_right_hash.setHashPartitioned(this.keys2);

		return Arrays.asList(new GlobalPropertiesPair(partitioned_left_any, partitioned_right_any),
				new GlobalPropertiesPair(partitioned_left_hash, partitioned_right_hash));
	}
	else {
		RequestedGlobalProperties partitioned_left = new RequestedGlobalProperties();
		partitioned_left.setCustomPartitioned(this.keys1, this.customPartitioner);

		RequestedGlobalProperties partitioned_right = new RequestedGlobalProperties();
		partitioned_right.setCustomPartitioned(this.keys2, this.customPartitioner);

		return Collections.singletonList(new GlobalPropertiesPair(partitioned_left, partitioned_right));
	}
}
 
Example 8
Source File: CoGroupDescriptor.java    From flink with Apache License 2.0 5 votes vote down vote up
@Override
protected List<GlobalPropertiesPair> createPossibleGlobalProperties() {

	if (this.customPartitioner == null) {

		// we accept compatible partitionings of any type
		RequestedGlobalProperties partitioned_left_any = new RequestedGlobalProperties();
		RequestedGlobalProperties partitioned_right_any = new RequestedGlobalProperties();
		partitioned_left_any.setAnyPartitioning(this.keys1);
		partitioned_right_any.setAnyPartitioning(this.keys2);

		// add strict hash partitioning of both inputs on their full key sets
		RequestedGlobalProperties partitioned_left_hash = new RequestedGlobalProperties();
		RequestedGlobalProperties partitioned_right_hash = new RequestedGlobalProperties();
		partitioned_left_hash.setHashPartitioned(this.keys1);
		partitioned_right_hash.setHashPartitioned(this.keys2);

		return Arrays.asList(new GlobalPropertiesPair(partitioned_left_any, partitioned_right_any),
				new GlobalPropertiesPair(partitioned_left_hash, partitioned_right_hash));
	}
	else {
		RequestedGlobalProperties partitioned_left = new RequestedGlobalProperties();
		partitioned_left.setCustomPartitioned(this.keys1, this.customPartitioner);

		RequestedGlobalProperties partitioned_right = new RequestedGlobalProperties();
		partitioned_right.setCustomPartitioned(this.keys2, this.customPartitioner);

		return Collections.singletonList(new GlobalPropertiesPair(partitioned_left, partitioned_right));
	}
}
 
Example 9
Source File: WorksetIterationNode.java    From flink with Apache License 2.0 4 votes vote down vote up
@Override
protected List<GlobalPropertiesPair> createPossibleGlobalProperties() {
	RequestedGlobalProperties partitionedGp = new RequestedGlobalProperties();
	partitionedGp.setHashPartitioned(this.keys1);
	return Collections.singletonList(new GlobalPropertiesPair(partitionedGp, new RequestedGlobalProperties()));
}
 
Example 10
Source File: WorksetIterationNode.java    From flink with Apache License 2.0 4 votes vote down vote up
@Override
public void computeInterestingPropertiesForInputs(CostEstimator estimator) {
	// our own solution (the solution set) is always partitioned and this cannot be adjusted
	// depending on what the successor to the workset iteration requests. for that reason,
	// we ignore incoming interesting properties.
	
	// in addition, we need to make 2 interesting property passes, because the root of the step function 
	// that computes the next workset needs the interesting properties as generated by the
	// workset source of the step function. the second pass concerns only the workset path.
	// as initial interesting properties, we have the trivial ones for the step function,
	// and partitioned on the solution set key for the solution set delta 
	
	RequestedGlobalProperties partitionedProperties = new RequestedGlobalProperties();
	partitionedProperties.setHashPartitioned(this.solutionSetKeyFields);
	InterestingProperties partitionedIP = new InterestingProperties();
	partitionedIP.addGlobalProperties(partitionedProperties);
	partitionedIP.addLocalProperties(new RequestedLocalProperties());
	
	this.nextWorksetRootConnection.setInterestingProperties(new InterestingProperties());
	this.solutionSetDeltaRootConnection.setInterestingProperties(partitionedIP.clone());
	
	InterestingPropertyVisitor ipv = new InterestingPropertyVisitor(estimator);
	this.nextWorkset.accept(ipv);
	this.solutionSetDelta.accept(ipv);
	
	// take the interesting properties of the partial solution and add them to the root interesting properties
	InterestingProperties worksetIntProps = this.worksetNode.getInterestingProperties();
	InterestingProperties intProps = new InterestingProperties();
	intProps.getGlobalProperties().addAll(worksetIntProps.getGlobalProperties());
	intProps.getLocalProperties().addAll(worksetIntProps.getLocalProperties());
	
	// clear all interesting properties to prepare the second traversal
	this.nextWorksetRootConnection.clearInterestingProperties();
	this.nextWorkset.accept(InterestingPropertiesClearer.INSTANCE);
	
	// 2nd pass
	this.nextWorksetRootConnection.setInterestingProperties(intProps);
	this.nextWorkset.accept(ipv);
	
	// now add the interesting properties of the workset to the workset input
	final InterestingProperties inProps = this.worksetNode.getInterestingProperties().clone();
	inProps.addGlobalProperties(new RequestedGlobalProperties());
	inProps.addLocalProperties(new RequestedLocalProperties());
	this.input2.setInterestingProperties(inProps);
	
	// the partial solution must be hash partitioned, so it has only that as interesting properties
	this.input1.setInterestingProperties(partitionedIP);
}
 
Example 11
Source File: SolutionSetDeltaOperator.java    From flink with Apache License 2.0 4 votes vote down vote up
@Override
protected List<RequestedGlobalProperties> createPossibleGlobalProperties() {
	RequestedGlobalProperties partProps = new RequestedGlobalProperties();
	partProps.setHashPartitioned(this.keyList);
	return Collections.singletonList(partProps);
}
 
Example 12
Source File: AbstractJoinDescriptor.java    From flink with Apache License 2.0 4 votes vote down vote up
@Override
protected List<GlobalPropertiesPair> createPossibleGlobalProperties() {
	ArrayList<GlobalPropertiesPair> pairs = new ArrayList<GlobalPropertiesPair>();
	
	if (repartitionAllowed) {
		// partition both (hash or custom)
		if (this.customPartitioner == null) {

			// we accept compatible partitionings of any type
			RequestedGlobalProperties partitioned_left_any = new RequestedGlobalProperties();
			RequestedGlobalProperties partitioned_right_any = new RequestedGlobalProperties();
			partitioned_left_any.setAnyPartitioning(this.keys1);
			partitioned_right_any.setAnyPartitioning(this.keys2);
			pairs.add(new GlobalPropertiesPair(partitioned_left_any, partitioned_right_any));

			// add strict hash partitioning of both inputs on their full key sets
			RequestedGlobalProperties partitioned_left_hash = new RequestedGlobalProperties();
			RequestedGlobalProperties partitioned_right_hash = new RequestedGlobalProperties();
			partitioned_left_hash.setHashPartitioned(this.keys1);
			partitioned_right_hash.setHashPartitioned(this.keys2);
			pairs.add(new GlobalPropertiesPair(partitioned_left_hash, partitioned_right_hash));
		}
		else {
			RequestedGlobalProperties partitioned_left = new RequestedGlobalProperties();
			partitioned_left.setCustomPartitioned(this.keys1, this.customPartitioner);

			RequestedGlobalProperties partitioned_right = new RequestedGlobalProperties();
			partitioned_right.setCustomPartitioned(this.keys2, this.customPartitioner);

			return Collections.singletonList(new GlobalPropertiesPair(partitioned_left, partitioned_right));
		}
		
		
		RequestedGlobalProperties partitioned1 = new RequestedGlobalProperties();
		if (customPartitioner == null) {
			partitioned1.setAnyPartitioning(this.keys1);
		} else {
			partitioned1.setCustomPartitioned(this.keys1, this.customPartitioner);
		}
		
		RequestedGlobalProperties partitioned2 = new RequestedGlobalProperties();
		if (customPartitioner == null) {
			partitioned2.setAnyPartitioning(this.keys2);
		} else {
			partitioned2.setCustomPartitioned(this.keys2, this.customPartitioner);
		}
		
		pairs.add(new GlobalPropertiesPair(partitioned1, partitioned2));
	}
	
	if (broadcastSecondAllowed) {
		// replicate second
		RequestedGlobalProperties any1 = new RequestedGlobalProperties();
		RequestedGlobalProperties replicated2 = new RequestedGlobalProperties();
		replicated2.setFullyReplicated();
		pairs.add(new GlobalPropertiesPair(any1, replicated2));
	}
	
	if (broadcastFirstAllowed) {
		// replicate first
		RequestedGlobalProperties replicated1 = new RequestedGlobalProperties();
		replicated1.setFullyReplicated();
		RequestedGlobalProperties any2 = new RequestedGlobalProperties();
		pairs.add(new GlobalPropertiesPair(replicated1, any2));
	}
	return pairs;
}
 
Example 13
Source File: WorksetIterationNode.java    From flink with Apache License 2.0 4 votes vote down vote up
@Override
protected List<GlobalPropertiesPair> createPossibleGlobalProperties() {
	RequestedGlobalProperties partitionedGp = new RequestedGlobalProperties();
	partitionedGp.setHashPartitioned(this.keys1);
	return Collections.singletonList(new GlobalPropertiesPair(partitionedGp, new RequestedGlobalProperties()));
}
 
Example 14
Source File: WorksetIterationNode.java    From flink with Apache License 2.0 4 votes vote down vote up
@Override
public void computeInterestingPropertiesForInputs(CostEstimator estimator) {
	// our own solution (the solution set) is always partitioned and this cannot be adjusted
	// depending on what the successor to the workset iteration requests. for that reason,
	// we ignore incoming interesting properties.
	
	// in addition, we need to make 2 interesting property passes, because the root of the step function 
	// that computes the next workset needs the interesting properties as generated by the
	// workset source of the step function. the second pass concerns only the workset path.
	// as initial interesting properties, we have the trivial ones for the step function,
	// and partitioned on the solution set key for the solution set delta 
	
	RequestedGlobalProperties partitionedProperties = new RequestedGlobalProperties();
	partitionedProperties.setHashPartitioned(this.solutionSetKeyFields);
	InterestingProperties partitionedIP = new InterestingProperties();
	partitionedIP.addGlobalProperties(partitionedProperties);
	partitionedIP.addLocalProperties(new RequestedLocalProperties());
	
	this.nextWorksetRootConnection.setInterestingProperties(new InterestingProperties());
	this.solutionSetDeltaRootConnection.setInterestingProperties(partitionedIP.clone());
	
	InterestingPropertyVisitor ipv = new InterestingPropertyVisitor(estimator);
	this.nextWorkset.accept(ipv);
	this.solutionSetDelta.accept(ipv);
	
	// take the interesting properties of the partial solution and add them to the root interesting properties
	InterestingProperties worksetIntProps = this.worksetNode.getInterestingProperties();
	InterestingProperties intProps = new InterestingProperties();
	intProps.getGlobalProperties().addAll(worksetIntProps.getGlobalProperties());
	intProps.getLocalProperties().addAll(worksetIntProps.getLocalProperties());
	
	// clear all interesting properties to prepare the second traversal
	this.nextWorksetRootConnection.clearInterestingProperties();
	this.nextWorkset.accept(InterestingPropertiesClearer.INSTANCE);
	
	// 2nd pass
	this.nextWorksetRootConnection.setInterestingProperties(intProps);
	this.nextWorkset.accept(ipv);
	
	// now add the interesting properties of the workset to the workset input
	final InterestingProperties inProps = this.worksetNode.getInterestingProperties().clone();
	inProps.addGlobalProperties(new RequestedGlobalProperties());
	inProps.addLocalProperties(new RequestedLocalProperties());
	this.input2.setInterestingProperties(inProps);
	
	// the partial solution must be hash partitioned, so it has only that as interesting properties
	this.input1.setInterestingProperties(partitionedIP);
}
 
Example 15
Source File: AbstractJoinDescriptor.java    From Flink-CEPplus with Apache License 2.0 4 votes vote down vote up
@Override
protected List<GlobalPropertiesPair> createPossibleGlobalProperties() {
	ArrayList<GlobalPropertiesPair> pairs = new ArrayList<GlobalPropertiesPair>();
	
	if (repartitionAllowed) {
		// partition both (hash or custom)
		if (this.customPartitioner == null) {

			// we accept compatible partitionings of any type
			RequestedGlobalProperties partitioned_left_any = new RequestedGlobalProperties();
			RequestedGlobalProperties partitioned_right_any = new RequestedGlobalProperties();
			partitioned_left_any.setAnyPartitioning(this.keys1);
			partitioned_right_any.setAnyPartitioning(this.keys2);
			pairs.add(new GlobalPropertiesPair(partitioned_left_any, partitioned_right_any));

			// add strict hash partitioning of both inputs on their full key sets
			RequestedGlobalProperties partitioned_left_hash = new RequestedGlobalProperties();
			RequestedGlobalProperties partitioned_right_hash = new RequestedGlobalProperties();
			partitioned_left_hash.setHashPartitioned(this.keys1);
			partitioned_right_hash.setHashPartitioned(this.keys2);
			pairs.add(new GlobalPropertiesPair(partitioned_left_hash, partitioned_right_hash));
		}
		else {
			RequestedGlobalProperties partitioned_left = new RequestedGlobalProperties();
			partitioned_left.setCustomPartitioned(this.keys1, this.customPartitioner);

			RequestedGlobalProperties partitioned_right = new RequestedGlobalProperties();
			partitioned_right.setCustomPartitioned(this.keys2, this.customPartitioner);

			return Collections.singletonList(new GlobalPropertiesPair(partitioned_left, partitioned_right));
		}
		
		
		RequestedGlobalProperties partitioned1 = new RequestedGlobalProperties();
		if (customPartitioner == null) {
			partitioned1.setAnyPartitioning(this.keys1);
		} else {
			partitioned1.setCustomPartitioned(this.keys1, this.customPartitioner);
		}
		
		RequestedGlobalProperties partitioned2 = new RequestedGlobalProperties();
		if (customPartitioner == null) {
			partitioned2.setAnyPartitioning(this.keys2);
		} else {
			partitioned2.setCustomPartitioned(this.keys2, this.customPartitioner);
		}
		
		pairs.add(new GlobalPropertiesPair(partitioned1, partitioned2));
	}
	
	if (broadcastSecondAllowed) {
		// replicate second
		RequestedGlobalProperties any1 = new RequestedGlobalProperties();
		RequestedGlobalProperties replicated2 = new RequestedGlobalProperties();
		replicated2.setFullyReplicated();
		pairs.add(new GlobalPropertiesPair(any1, replicated2));
	}
	
	if (broadcastFirstAllowed) {
		// replicate first
		RequestedGlobalProperties replicated1 = new RequestedGlobalProperties();
		replicated1.setFullyReplicated();
		RequestedGlobalProperties any2 = new RequestedGlobalProperties();
		pairs.add(new GlobalPropertiesPair(replicated1, any2));
	}
	return pairs;
}
 
Example 16
Source File: SolutionSetDeltaOperator.java    From flink with Apache License 2.0 4 votes vote down vote up
@Override
protected List<RequestedGlobalProperties> createPossibleGlobalProperties() {
	RequestedGlobalProperties partProps = new RequestedGlobalProperties();
	partProps.setHashPartitioned(this.keyList);
	return Collections.singletonList(partProps);
}
 
Example 17
Source File: AbstractJoinDescriptor.java    From flink with Apache License 2.0 4 votes vote down vote up
@Override
protected List<GlobalPropertiesPair> createPossibleGlobalProperties() {
	ArrayList<GlobalPropertiesPair> pairs = new ArrayList<GlobalPropertiesPair>();
	
	if (repartitionAllowed) {
		// partition both (hash or custom)
		if (this.customPartitioner == null) {

			// we accept compatible partitionings of any type
			RequestedGlobalProperties partitioned_left_any = new RequestedGlobalProperties();
			RequestedGlobalProperties partitioned_right_any = new RequestedGlobalProperties();
			partitioned_left_any.setAnyPartitioning(this.keys1);
			partitioned_right_any.setAnyPartitioning(this.keys2);
			pairs.add(new GlobalPropertiesPair(partitioned_left_any, partitioned_right_any));

			// add strict hash partitioning of both inputs on their full key sets
			RequestedGlobalProperties partitioned_left_hash = new RequestedGlobalProperties();
			RequestedGlobalProperties partitioned_right_hash = new RequestedGlobalProperties();
			partitioned_left_hash.setHashPartitioned(this.keys1);
			partitioned_right_hash.setHashPartitioned(this.keys2);
			pairs.add(new GlobalPropertiesPair(partitioned_left_hash, partitioned_right_hash));
		}
		else {
			RequestedGlobalProperties partitioned_left = new RequestedGlobalProperties();
			partitioned_left.setCustomPartitioned(this.keys1, this.customPartitioner);

			RequestedGlobalProperties partitioned_right = new RequestedGlobalProperties();
			partitioned_right.setCustomPartitioned(this.keys2, this.customPartitioner);

			return Collections.singletonList(new GlobalPropertiesPair(partitioned_left, partitioned_right));
		}
		
		
		RequestedGlobalProperties partitioned1 = new RequestedGlobalProperties();
		if (customPartitioner == null) {
			partitioned1.setAnyPartitioning(this.keys1);
		} else {
			partitioned1.setCustomPartitioned(this.keys1, this.customPartitioner);
		}
		
		RequestedGlobalProperties partitioned2 = new RequestedGlobalProperties();
		if (customPartitioner == null) {
			partitioned2.setAnyPartitioning(this.keys2);
		} else {
			partitioned2.setCustomPartitioned(this.keys2, this.customPartitioner);
		}
		
		pairs.add(new GlobalPropertiesPair(partitioned1, partitioned2));
	}
	
	if (broadcastSecondAllowed) {
		// replicate second
		RequestedGlobalProperties any1 = new RequestedGlobalProperties();
		RequestedGlobalProperties replicated2 = new RequestedGlobalProperties();
		replicated2.setFullyReplicated();
		pairs.add(new GlobalPropertiesPair(any1, replicated2));
	}
	
	if (broadcastFirstAllowed) {
		// replicate first
		RequestedGlobalProperties replicated1 = new RequestedGlobalProperties();
		replicated1.setFullyReplicated();
		RequestedGlobalProperties any2 = new RequestedGlobalProperties();
		pairs.add(new GlobalPropertiesPair(replicated1, any2));
	}
	return pairs;
}
 
Example 18
Source File: WorksetIterationNode.java    From Flink-CEPplus with Apache License 2.0 4 votes vote down vote up
@Override
protected List<GlobalPropertiesPair> createPossibleGlobalProperties() {
	RequestedGlobalProperties partitionedGp = new RequestedGlobalProperties();
	partitionedGp.setHashPartitioned(this.keys1);
	return Collections.singletonList(new GlobalPropertiesPair(partitionedGp, new RequestedGlobalProperties()));
}
 
Example 19
Source File: WorksetIterationNode.java    From Flink-CEPplus with Apache License 2.0 4 votes vote down vote up
@Override
public void computeInterestingPropertiesForInputs(CostEstimator estimator) {
	// our own solution (the solution set) is always partitioned and this cannot be adjusted
	// depending on what the successor to the workset iteration requests. for that reason,
	// we ignore incoming interesting properties.
	
	// in addition, we need to make 2 interesting property passes, because the root of the step function 
	// that computes the next workset needs the interesting properties as generated by the
	// workset source of the step function. the second pass concerns only the workset path.
	// as initial interesting properties, we have the trivial ones for the step function,
	// and partitioned on the solution set key for the solution set delta 
	
	RequestedGlobalProperties partitionedProperties = new RequestedGlobalProperties();
	partitionedProperties.setHashPartitioned(this.solutionSetKeyFields);
	InterestingProperties partitionedIP = new InterestingProperties();
	partitionedIP.addGlobalProperties(partitionedProperties);
	partitionedIP.addLocalProperties(new RequestedLocalProperties());
	
	this.nextWorksetRootConnection.setInterestingProperties(new InterestingProperties());
	this.solutionSetDeltaRootConnection.setInterestingProperties(partitionedIP.clone());
	
	InterestingPropertyVisitor ipv = new InterestingPropertyVisitor(estimator);
	this.nextWorkset.accept(ipv);
	this.solutionSetDelta.accept(ipv);
	
	// take the interesting properties of the partial solution and add them to the root interesting properties
	InterestingProperties worksetIntProps = this.worksetNode.getInterestingProperties();
	InterestingProperties intProps = new InterestingProperties();
	intProps.getGlobalProperties().addAll(worksetIntProps.getGlobalProperties());
	intProps.getLocalProperties().addAll(worksetIntProps.getLocalProperties());
	
	// clear all interesting properties to prepare the second traversal
	this.nextWorksetRootConnection.clearInterestingProperties();
	this.nextWorkset.accept(InterestingPropertiesClearer.INSTANCE);
	
	// 2nd pass
	this.nextWorksetRootConnection.setInterestingProperties(intProps);
	this.nextWorkset.accept(ipv);
	
	// now add the interesting properties of the workset to the workset input
	final InterestingProperties inProps = this.worksetNode.getInterestingProperties().clone();
	inProps.addGlobalProperties(new RequestedGlobalProperties());
	inProps.addLocalProperties(new RequestedLocalProperties());
	this.input2.setInterestingProperties(inProps);
	
	// the partial solution must be hash partitioned, so it has only that as interesting properties
	this.input1.setInterestingProperties(partitionedIP);
}
 
Example 20
Source File: SolutionSetDeltaOperator.java    From Flink-CEPplus with Apache License 2.0 4 votes vote down vote up
@Override
protected List<RequestedGlobalProperties> createPossibleGlobalProperties() {
	RequestedGlobalProperties partProps = new RequestedGlobalProperties();
	partProps.setHashPartitioned(this.keyList);
	return Collections.singletonList(partProps);
}