Class FrequencySampler<T>

java.lang.Object
org.apache.cassandra.metrics.Sampler<T>
org.apache.cassandra.metrics.FrequencySampler<T>
Type Parameters:
T -

public abstract class FrequencySampler<T> extends Sampler<T>
Find the most frequent sample. A sample adds to the sum of its key ie

add("x", 10); and add("x", 20); will result in "x" = 30

This uses StreamSummary to only store the approximate cardinality (capacity) of keys. If the number of distinct keys exceed the capacity, the error of the sample may increase depending on distribution of keys among the total set. Note: Sampler.samplerExecutor is single threaded but we still need to synchronize as we have access from both internal and the external JMX context that can cause races.
  • Constructor Details

    • FrequencySampler

      public FrequencySampler()
  • Method Details

    • beginSampling

      public void beginSampling(int capacity, long durationMillis)
      Start to record samples
      Specified by:
      beginSampling in class Sampler<T>
      Parameters:
      capacity - Number of sample items to keep in memory, the lower this is the less accurate results are. For best results use value close to cardinality, but understand the memory trade offs.
      durationMillis - Upperbound duration in milliseconds for sampling. The sampler stops accepting new samples after exceeding the duration even if Sampler.finishSampling(int)} is not called.
    • finishSampling

      public List<Sampler.Sample<T>> finishSampling(int count)
      Call to stop collecting samples, and gather the results
      Specified by:
      finishSampling in class Sampler<T>
      Parameters:
      count - Number of most frequent items to return
      Returns:
      a list of samples, the size is the minimum of the total samples and .
    • insert

      protected void insert(T item, long value)
      Specified by:
      insert in class Sampler<T>