Class UpdatableSketch<U,​S extends UpdatableSummary<U>>

  • Type Parameters:
    U - Type of the value, which is passed to update method of a Summary
    S - Type of the UpdatableSummary<U>
    Direct Known Subclasses:
    ArrayOfStringsSketch, DoubleSketch, IntegerSketch

    public class UpdatableSketch<U,​S extends UpdatableSummary<U>>
    extends Sketch<S>
    An extension of QuickSelectSketch<S>, which can be updated with many types of keys. Summary objects are created using a user-defined SummaryFactory class, which should allow very flexible parameterization if needed. Keys are presented to a sketch along with values of a user-defined update type U. When an entry is inserted into a sketch or a duplicate key is presented to a sketch then summary.update(U value) method will be called. So any kind of user-defined accumulation is possible. Summaries also must know how to copy themselves. Also union and intersection of summaries can be implemented in a sub-class of SummarySetOperations, which will be used in case Union or Intersection of two instances of Tuple Sketch is needed
    • Constructor Detail

      • UpdatableSketch

        public UpdatableSketch​(int nomEntries,
                               int lgResizeFactor,
                               float samplingProbability,
                               SummaryFactory<S> summaryFactory)
        This is to create a new instance of an UpdatableQuickSelectSketch.
        Parameters:
        nomEntries - Nominal number of entries. Forced to the nearest power of 2 greater than or equal to the given value.
        lgResizeFactor - log2(resizeFactor) - value from 0 to 3:
         0 - no resizing (max size allocated),
         1 - double internal hash table each time it reaches a threshold
         2 - grow four times
         3 - grow eight times (default)
         
        samplingProbability - See Sampling Probability
        summaryFactory - An instance of a SummaryFactory.
      • UpdatableSketch

        @Deprecated
        public UpdatableSketch​(org.apache.datasketches.memory.Memory srcMem,
                               SummaryDeserializer<S> deserializer,
                               SummaryFactory<S> summaryFactory)
        Deprecated.
        As of 3.0.0, heapifying an UpdatableSketch is deprecated. This capability will be removed in a future release. Heapifying a CompactSketch is not deprecated.
        This is to create an instance of a sketch given a serialized form
        Parameters:
        srcMem - Memory object with data of a serialized UpdatableSketch
        deserializer - instance of SummaryDeserializer
        summaryFactory - instance of SummaryFactory
      • UpdatableSketch

        public UpdatableSketch​(UpdatableSketch<U,​S> sketch)
        Copy Constructor
        Parameters:
        sketch - the sketch to copy
    • Method Detail

      • update

        public void update​(long key,
                           U value)
        Updates this sketch with a long key and U value. The value is passed to update() method of the Summary object associated with the key
        Parameters:
        key - The given long key
        value - The given U value
      • update

        public void update​(double key,
                           U value)
        Updates this sketch with a double key and U value. The value is passed to update() method of the Summary object associated with the key
        Parameters:
        key - The given double key
        value - The given U value
      • update

        public void update​(String key,
                           U value)
        Updates this sketch with a String key and U value. The value is passed to update() method of the Summary object associated with the key
        Parameters:
        key - The given String key
        value - The given U value
      • update

        public void update​(byte[] key,
                           U value)
        Updates this sketch with a byte[] key and U value. The value is passed to update() method of the Summary object associated with the key
        Parameters:
        key - The given byte[] key
        value - The given U value
      • update

        public void update​(ByteBuffer buffer,
                           U value)
        Updates this sketch with a ByteBuffer and U value The value is passed to the update() method of the Summary object associated with the key
        Parameters:
        buffer - The given ByteBuffer key
        value - The given U value
      • update

        public void update​(int[] key,
                           U value)
        Updates this sketch with a int[] key and U value. The value is passed to update() method of the Summary object associated with the key
        Parameters:
        key - The given int[] key
        value - The given U value
      • update

        public void update​(long[] key,
                           U value)
        Updates this sketch with a long[] key and U value. The value is passed to update() method of the Summary object associated with the key
        Parameters:
        key - The given long[] key
        value - The given U value
      • getRetainedEntries

        public int getRetainedEntries()
        Specified by:
        getRetainedEntries in class Sketch<S extends Summary>
        Returns:
        number of retained entries
      • getCountLessThanThetaLong

        public int getCountLessThanThetaLong​(long thetaLong)
        Description copied from class: Sketch
        Gets the number of hash values less than the given theta expressed as a long.
        Specified by:
        getCountLessThanThetaLong in class Sketch<S extends Summary>
        Parameters:
        thetaLong - the given theta as a long between zero and Long.MAX_VALUE.
        Returns:
        the number of hash values less than the given thetaLong.
      • getNominalEntries

        public int getNominalEntries()
        Get configured nominal number of entries
        Returns:
        nominal number of entries
      • getLgK

        public int getLgK()
        Get log_base2 of Nominal Entries
        Returns:
        log_base2 of Nominal Entries
      • getSamplingProbability

        public float getSamplingProbability()
        Get configured sampling probability
        Returns:
        sampling probability
      • getCurrentCapacity

        public int getCurrentCapacity()
        Get current capacity
        Returns:
        current capacity
      • getResizeFactor

        public ResizeFactor getResizeFactor()
        Get configured resize factor
        Returns:
        resize factor
      • trim

        public void trim()
        Rebuilds reducing the actual number of entries to the nominal number of entries if needed
      • reset

        public void reset()
        Resets this sketch an empty state.
      • compact

        public CompactSketch<S> compact()
        Converts the current state of the sketch into a compact sketch
        Specified by:
        compact in class Sketch<S extends Summary>
        Returns:
        compact sketch
      • toByteArray

        @Deprecated
        public byte[] toByteArray()
        Deprecated.
        As of 3.0.0, serializing an UpdatableSketch is deprecated. This capability will be removed in a future release. Serializing a CompactSketch is not deprecated.
        This serializes an UpdatableSketch (QuickSelectSketch).
        Specified by:
        toByteArray in class Sketch<S extends Summary>
        Returns:
        serialized representation of an UpdatableSketch (QuickSelectSketch).
      • insertSummary

        protected void insertSummary​(int index,
                                     S summary)