Class 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 Detail

      • FrequencySampler

        public FrequencySampler()
    • Method Detail

      • 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 java.util.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 {@param count}.
      • insert

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