package edu.washington.escience.myria.operator.network.distribute;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import edu.washington.escience.myria.util.MyriaArrayUtils;
/**
* Hash distribute function.
*/
public final class HashDistributeFunction extends DistributeFunction {
/** Required for Java serialization. */
private static final long serialVersionUID = 1L;
/** The indices used for partitioning. */
@JsonProperty private final int[] indexes;
/**
* @param indexes
*/
@JsonCreator
public HashDistributeFunction(@JsonProperty("indexes") final int[] indexes) {
super(new HashPartitionFunction(indexes));
this.indexes = indexes;
}
@Override
public void setDestinations(final int numWorker, final int numOperatorId) {
partitionToDestination = MyriaArrayUtils.create2DVerticalIndexList(numWorker);
partitionFunction.setNumPartitions(numWorker);
}
/**
* @return indexes
*/
public int[] getIndexes() {
return indexes;
}
}