Class AbstractHeapState<K,N,SV>
- java.lang.Object
-
- org.apache.flink.runtime.state.heap.AbstractHeapState<K,N,SV>
-
- Type Parameters:
K
- The type of the key.N
- The type of the namespace.SV
- The type of the values in the state.
- All Implemented Interfaces:
State
,InternalKvState<K,N,SV>
public abstract class AbstractHeapState<K,N,SV> extends Object implements InternalKvState<K,N,SV>
Base class for partitionedState
implementations that are backed by a regular heap hash map. The concrete implementations define how the state is checkpointed.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.flink.runtime.state.internal.InternalKvState
InternalKvState.StateIncrementalVisitor<K,N,V>
-
-
Field Summary
Fields Modifier and Type Field Description protected N
currentNamespace
The current namespace, which the access methods will refer to.protected TypeSerializer<K>
keySerializer
protected TypeSerializer<N>
namespaceSerializer
protected StateTable<K,N,SV>
stateTable
Map containing the actual key/value pairs.protected TypeSerializer<SV>
valueSerializer
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clear()
Removes the value mapped under the current key.protected SV
getDefaultValue()
byte[]
getSerializedValue(byte[] serializedKeyAndNamespace, TypeSerializer<K> safeKeySerializer, TypeSerializer<N> safeNamespaceSerializer, TypeSerializer<SV> safeValueSerializer)
Returns the serialized value for the given key and namespace.InternalKvState.StateIncrementalVisitor<K,N,SV>
getStateIncrementalVisitor(int recommendedMaxNumberOfReturnedRecords)
Get global visitor of state entries.StateTable<K,N,SV>
getStateTable()
This should only be used for testing.void
setCurrentNamespace(N namespace)
Sets the current namespace, which will be used when using the state access methods.protected AbstractHeapState<K,N,SV>
setDefaultValue(SV defaultValue)
protected AbstractHeapState<K,N,SV>
setNamespaceSerializer(TypeSerializer<N> namespaceSerializer)
protected AbstractHeapState<K,N,SV>
setValueSerializer(TypeSerializer<SV> valueSerializer)
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.flink.runtime.state.internal.InternalKvState
getKeySerializer, getNamespaceSerializer, getValueSerializer
-
-
-
-
Field Detail
-
stateTable
protected final StateTable<K,N,SV> stateTable
Map containing the actual key/value pairs.
-
currentNamespace
protected N currentNamespace
The current namespace, which the access methods will refer to.
-
keySerializer
protected final TypeSerializer<K> keySerializer
-
valueSerializer
protected TypeSerializer<SV> valueSerializer
-
namespaceSerializer
protected TypeSerializer<N> namespaceSerializer
-
-
Method Detail
-
clear
public final void clear()
Description copied from interface:State
Removes the value mapped under the current key.
-
setCurrentNamespace
public final void setCurrentNamespace(N namespace)
Description copied from interface:InternalKvState
Sets the current namespace, which will be used when using the state access methods.- Specified by:
setCurrentNamespace
in interfaceInternalKvState<K,N,SV>
- Parameters:
namespace
- The namespace.
-
getSerializedValue
public byte[] getSerializedValue(byte[] serializedKeyAndNamespace, TypeSerializer<K> safeKeySerializer, TypeSerializer<N> safeNamespaceSerializer, TypeSerializer<SV> safeValueSerializer) throws Exception
Description copied from interface:InternalKvState
Returns the serialized value for the given key and namespace.If no value is associated with key and namespace,
null
is returned.TO IMPLEMENTERS: This method is called by multiple threads. Anything stateful (e.g. serializers) should be either duplicated or protected from undesired consequences of concurrent invocations.
- Specified by:
getSerializedValue
in interfaceInternalKvState<K,N,SV>
- Parameters:
serializedKeyAndNamespace
- Serialized key and namespacesafeKeySerializer
- A key serializer which is safe to be used even in multi-threaded contextsafeNamespaceSerializer
- A namespace serializer which is safe to be used even in multi-threaded contextsafeValueSerializer
- A value serializer which is safe to be used even in multi-threaded context- Returns:
- Serialized value or
null
if no value is associated with the key and namespace. - Throws:
Exception
- Exceptions during serialization are forwarded
-
getStateTable
@VisibleForTesting public StateTable<K,N,SV> getStateTable()
This should only be used for testing.
-
getDefaultValue
protected SV getDefaultValue()
-
setNamespaceSerializer
protected AbstractHeapState<K,N,SV> setNamespaceSerializer(TypeSerializer<N> namespaceSerializer)
-
setValueSerializer
protected AbstractHeapState<K,N,SV> setValueSerializer(TypeSerializer<SV> valueSerializer)
-
setDefaultValue
protected AbstractHeapState<K,N,SV> setDefaultValue(SV defaultValue)
-
getStateIncrementalVisitor
public InternalKvState.StateIncrementalVisitor<K,N,SV> getStateIncrementalVisitor(int recommendedMaxNumberOfReturnedRecords)
Description copied from interface:InternalKvState
Get global visitor of state entries.- Specified by:
getStateIncrementalVisitor
in interfaceInternalKvState<K,N,SV>
- Parameters:
recommendedMaxNumberOfReturnedRecords
- hint to the visitor not to exceed this number of returned records pernextEntries
call, it can still be exceeded by some smaller constant.- Returns:
- global iterator over state entries
-
-