Class Sample

  extended by cascading.operation.BaseOperation<Random>
      extended by cascading.operation.filter.Sample
All Implemented Interfaces:
DeclaresResults, Filter<Random>, Operation<Random>, Traceable, Serializable

public class Sample
extends BaseOperation<Random>
implements Filter<Random>

Class Sample is a Filter that only allows the given fraction of Tuple instances to pass.

Where fraction is between 1 and zero, inclusive. Thus to sample 50% of the tuples in a stream, use the fraction 0.5.

By default, the seed is created at random on the constructor. This implies every branch using the Sample filter will return the same random stream based on that seed. So if this Sample instance is distributed into multiple systems against the same data, the result will be the same tuple stream. The alternative would be to make this Operation "not safe". See Operation.isSafe().

Conversely, if the same stream of random data is require across application executions, set the seed manually.

The seed is generated from the following code:

System.identityHashCode(this) * 2654435761L ^ System.currentTimeMillis()

Override makeSeed() to customize.

See Also:
Serialized Form

Field Summary
Fields inherited from class cascading.operation.BaseOperation
fieldDeclaration, numArgs, trace
Fields inherited from interface cascading.operation.Operation
Constructor Summary
Sample(double fraction)
          Creates a new Sample that permits percent Tuples to pass.
Sample(long seed, double fraction)
          Creates a new Sample that permits percent Tuples to pass.
Method Summary
 boolean equals(Object object)
 double getFraction()
 long getSeed()
 int hashCode()
 boolean isRemove(FlowProcess flowProcess, FilterCall<Random> filterCall)
          Method isRemove returns true if input should be removed from the tuple stream.
protected  long makeSeed()
 void prepare(FlowProcess flowProcess, OperationCall<Random> operationCall)
          Method prepare does nothing, and may safely be overridden.
Methods inherited from class cascading.operation.BaseOperation
cleanup, flush, getFieldDeclaration, getNumArgs, getTrace, isSafe, printOperationInternal, toString, toStringInternal
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface cascading.operation.Operation
cleanup, flush, getFieldDeclaration, getNumArgs, isSafe

Constructor Detail


public Sample(double fraction)
Creates a new Sample that permits percent Tuples to pass.

fraction - of type double


public Sample(long seed,
                                         double fraction)
Creates a new Sample that permits percent Tuples to pass. The given seed value seeds the random number generator.

seed - of type long
fraction - of type double
Method Detail


public long getSeed()


public double getFraction()


protected long makeSeed()


public void prepare(FlowProcess flowProcess,
                    OperationCall<Random> operationCall)
Description copied from class: BaseOperation
Method prepare does nothing, and may safely be overridden.

Specified by:
prepare in interface Operation<Random>
prepare in class BaseOperation<Random>


public boolean isRemove(FlowProcess flowProcess,
                        FilterCall<Random> filterCall)
Description copied from interface: Filter
Method isRemove returns true if input should be removed from the tuple stream.

Specified by:
isRemove in interface Filter<Random>
flowProcess - of type FlowProcess
filterCall - of type FilterCall


public boolean equals(Object object)
equals in class BaseOperation<Random>


public int hashCode()
hashCode in class BaseOperation<Random>

Copyright © 2007-2014 Concurrent, Inc. All Rights Reserved.