cascading.operation.filter
Class Sample

java.lang.Object
  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
ANY
 
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

Sample

@ConstructorProperties(value="fraction")
public Sample(double fraction)
Creates a new Sample that permits percent Tuples to pass.

Parameters:
fraction - of type double

Sample

@ConstructorProperties(value={"seed","fraction"})
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.

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

getSeed

public long getSeed()

getFraction

public double getFraction()

makeSeed

protected long makeSeed()

prepare

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>
Overrides:
prepare in class BaseOperation<Random>

isRemove

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>
Parameters:
flowProcess - of type FlowProcess
filterCall - of type FilterCall
Returns:
boolean

equals

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

hashCode

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


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