## cascading.operation.filter
Class Sample

    java.lang.Object
      cascading.operation.BaseOperation<Random>
          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-2014 Concurrent, Inc. All Rights Reserved.