Class InMemoryWindowStore

  • All Implemented Interfaces:
    StateStore, ReadOnlyWindowStore<org.apache.kafka.common.utils.Bytes,​byte[]>, WindowStore<org.apache.kafka.common.utils.Bytes,​byte[]>

    public class InMemoryWindowStore
    extends Object
    implements WindowStore<org.apache.kafka.common.utils.Bytes,​byte[]>
    • Method Detail

      • name

        public String name()
        Description copied from interface: StateStore
        The name of this store.
        Specified by:
        name in interface StateStore
        Returns:
        the storage name
      • put

        @Deprecated
        public void put​(org.apache.kafka.common.utils.Bytes key,
                        byte[] value)
        Deprecated.
        Description copied from interface: WindowStore
        Use the current record timestamp as the windowStartTimestamp and delegate to WindowStore.put(Object, Object, long).

        It's highly recommended to use WindowStore.put(Object, Object, long) instead, as the record timestamp is unlikely to be the correct windowStartTimestamp in general.

        Specified by:
        put in interface WindowStore<org.apache.kafka.common.utils.Bytes,​byte[]>
        Parameters:
        key - The key to associate the value to
        value - The value to update, it can be null; if the serialized bytes are also null it is interpreted as delete
      • put

        public void put​(org.apache.kafka.common.utils.Bytes key,
                        byte[] value,
                        long windowStartTimestamp)
        Description copied from interface: WindowStore
        Put a key-value pair into the window with given window start timestamp

        If serialized value bytes are null it is interpreted as delete. Note that deletes will be ignored in the case of an underlying store that retains duplicates.

        Specified by:
        put in interface WindowStore<org.apache.kafka.common.utils.Bytes,​byte[]>
        Parameters:
        key - The key to associate the value to
        value - The value; can be null
        windowStartTimestamp - The timestamp of the beginning of the window to put the key/value into
      • fetch

        public byte[] fetch​(org.apache.kafka.common.utils.Bytes key,
                            long windowStartTimestamp)
        Description copied from interface: ReadOnlyWindowStore
        Get the value of key from a window.
        Specified by:
        fetch in interface ReadOnlyWindowStore<org.apache.kafka.common.utils.Bytes,​byte[]>
        Parameters:
        key - the key to fetch
        windowStartTimestamp - start timestamp (inclusive) of the window
        Returns:
        The value or null if no value is found in the window
      • fetch

        @Deprecated
        public WindowStoreIterator<byte[]> fetch​(org.apache.kafka.common.utils.Bytes key,
                                                 long timeFrom,
                                                 long timeTo)
        Deprecated.
        Description copied from interface: WindowStore
        Get all the key-value pairs with the given key and the time range from all the existing windows.

        This iterator must be closed after use.

        The time range is inclusive and applies to the starting timestamp of the window. For example, if we have the following windows:

         +-------------------------------+
         |  key  | start time | end time |
         +-------+------------+----------+
         |   A   |     10     |    20    |
         +-------+------------+----------+
         |   A   |     15     |    25    |
         +-------+------------+----------+
         |   A   |     20     |    30    |
         +-------+------------+----------+
         |   A   |     25     |    35    |
         +--------------------------------
         
        And we call store.fetch("A", 10, 20) then the results will contain the first three windows from the table above, i.e., all those where 10 <= start time <= 20.

        For each key, the iterator guarantees ordering of windows, starting from the oldest/earliest available window to the newest/latest window.

        Specified by:
        fetch in interface ReadOnlyWindowStore<org.apache.kafka.common.utils.Bytes,​byte[]>
        Specified by:
        fetch in interface WindowStore<org.apache.kafka.common.utils.Bytes,​byte[]>
        Parameters:
        key - the key to fetch
        timeFrom - time range start (inclusive)
        timeTo - time range end (inclusive)
        Returns:
        an iterator over key-value pairs <timestamp, value>
      • fetch

        @Deprecated
        public KeyValueIterator<Windowed<org.apache.kafka.common.utils.Bytes>,​byte[]> fetch​(org.apache.kafka.common.utils.Bytes from,
                                                                                                  org.apache.kafka.common.utils.Bytes to,
                                                                                                  long timeFrom,
                                                                                                  long timeTo)
        Deprecated.
        Description copied from interface: WindowStore
        Get all the key-value pairs in the given key range and time range from all the existing windows.

        This iterator must be closed after use.

        Specified by:
        fetch in interface ReadOnlyWindowStore<org.apache.kafka.common.utils.Bytes,​byte[]>
        Specified by:
        fetch in interface WindowStore<org.apache.kafka.common.utils.Bytes,​byte[]>
        Parameters:
        from - the first key in the range
        to - the last key in the range
        timeFrom - time range start (inclusive)
        timeTo - time range end (inclusive)
        Returns:
        an iterator over windowed key-value pairs <Windowed<K>, value>
      • fetchAll

        @Deprecated
        public KeyValueIterator<Windowed<org.apache.kafka.common.utils.Bytes>,​byte[]> fetchAll​(long timeFrom,
                                                                                                     long timeTo)
        Deprecated.
        Description copied from interface: WindowStore
        Gets all the key-value pairs that belong to the windows within in the given time range.
        Specified by:
        fetchAll in interface ReadOnlyWindowStore<org.apache.kafka.common.utils.Bytes,​byte[]>
        Specified by:
        fetchAll in interface WindowStore<org.apache.kafka.common.utils.Bytes,​byte[]>
        Parameters:
        timeFrom - the beginning of the time slot from which to search (inclusive)
        timeTo - the end of the time slot from which to search (inclusive)
        Returns:
        an iterator over windowed key-value pairs <Windowed<K>, value>
      • all

        public KeyValueIterator<Windowed<org.apache.kafka.common.utils.Bytes>,​byte[]> all()
        Description copied from interface: ReadOnlyWindowStore
        Gets all the key-value pairs in the existing windows.
        Specified by:
        all in interface ReadOnlyWindowStore<org.apache.kafka.common.utils.Bytes,​byte[]>
        Returns:
        an iterator over windowed key-value pairs <Windowed<K>, value>
      • persistent

        public boolean persistent()
        Description copied from interface: StateStore
        Return if the storage is persistent or not.
        Specified by:
        persistent in interface StateStore
        Returns:
        true if the storage is persistent—false otherwise
      • isOpen

        public boolean isOpen()
        Description copied from interface: StateStore
        Is this store open for reading and writing
        Specified by:
        isOpen in interface StateStore
        Returns:
        true if the store is open
      • flush

        public void flush()
        Description copied from interface: StateStore
        Flush any cached data
        Specified by:
        flush in interface StateStore
      • close

        public void close()
        Description copied from interface: StateStore
        Close the storage engine. Note that this function needs to be idempotent since it may be called several times on the same state store.

        Users only need to implement this function but should NEVER need to call this api explicitly as it will be called by the library automatically when necessary

        Specified by:
        close in interface StateStore