Class MapView<K,V>
- java.lang.Object
-
- org.apache.flink.table.api.dataview.MapView<K,V>
-
- Type Parameters:
K
- key typeV
- value type
- All Implemented Interfaces:
DataView
- Direct Known Subclasses:
StateMapView
@TypeInfo(MapViewTypeInfoFactory.class) @PublicEvolving public class MapView<K,V> extends Object implements DataView
ADataView
that providesMap
-like functionality in the accumulator of anAggregateFunction
orTableAggregateFunction
when large amounts of data are expected.A
MapView
can be backed by a JavaHashMap
or can leverage Flink's state backends depending on the context in which the aggregate function is used. In many unbounded data scenarios, theMapView
delegates all calls to aMapState
instead of theHashMap
.Note: Keys of a
MapView
must not be null. Nulls in values are supported. For heap-based state backends,hashCode/equals
of the original (i.e. external) class are used. However, the serialization format will use internal data structures.The
DataType
s of the view's keys and values are reflectively extracted from the accumulator definition. This includes the generic argumentK
andV
of this class. If reflective extraction is not successful, it is possible to use aDataTypeHint
on top the accumulator field. It will be mapped to the underlying collection.The following examples show how to specify an
AggregateFunction
with aMapView
:public class MyAccumulator { public MapView<String, Integer> map = new MapView<>(); // or explicit: // {@literal @}DataTypeHint("MAP<STRING, INT>") // public MapView<String, Integer> map = new MapView<>(); public long count; } public class MyAggregateFunction extends AggregateFunction<Long, MyAccumulator> { {@literal @}Override public MyAccumulator createAccumulator() { return new MyAccumulator(); } public void accumulate(MyAccumulator accumulator, String id) { if (!accumulator.map.contains(id)) { accumulator.map.put(id, 1); accumulator.count++; } } {@literal @}Override public Long getValue(MyAccumulator accumulator) { return accumulator.count; } }
-
-
Field Summary
Fields Modifier and Type Field Description TypeInformation<?>
keyType
Deprecated.TypeInformation<?>
valueType
Deprecated.
-
Constructor Summary
Constructors Constructor Description MapView()
Creates a map view.MapView(TypeInformation<?> keyType, TypeInformation<?> valueType)
Deprecated.This method uses the old type system.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clear()
Removes all entries of this map.boolean
contains(K key)
Checks if the map view contains a value for a given key.Iterable<Map.Entry<K,V>>
entries()
Returns all entries of the map view.boolean
equals(Object o)
V
get(K key)
Return the value for the specified key ornull
if the key is not in the map view.Map<K,V>
getMap()
Returns the entire view's content as an instance ofMap
.int
hashCode()
boolean
isEmpty()
Returns true if the map view contains no key-value mappings, otherwise false.Iterator<Map.Entry<K,V>>
iterator()
Returns an iterator over all entries of the map view.Iterable<K>
keys()
Returns all the keys in the map view.static DataType
newMapViewDataType(DataType keyDataType, DataType valueDataType)
void
put(K key, V value)
Inserts a value for the given key into the map view.void
putAll(Map<K,V> map)
Inserts all mappings from the specified map to this map view.void
remove(K key)
Deletes the value for the given key.void
setMap(Map<K,V> map)
Replaces the entire view's content with the content of the givenMap
.Iterable<V>
values()
Returns all the values in the map view.
-
-
-
Field Detail
-
keyType
@Deprecated public transient TypeInformation<?> keyType
Deprecated.
-
valueType
@Deprecated public transient TypeInformation<?> valueType
Deprecated.
-
-
Constructor Detail
-
MapView
public MapView()
Creates a map view.The
DataType
of keys and values is reflectively extracted.
-
MapView
@Deprecated public MapView(TypeInformation<?> keyType, TypeInformation<?> valueType)
Deprecated.This method uses the old type system. Please use aDataTypeHint
instead if the reflective type extraction is not successful.Creates aMapView
with the specified key and value types.- Parameters:
keyType
- The type of keys of the map view.valueType
- The type of values of the map view.
-
-
Method Detail
-
setMap
public void setMap(Map<K,V> map)
Replaces the entire view's content with the content of the givenMap
.
-
get
public V get(K key) throws Exception
Return the value for the specified key ornull
if the key is not in the map view.- Parameters:
key
- The look up key.- Returns:
- The value for the specified key.
- Throws:
Exception
- Thrown if the system cannot get data.
-
put
public void put(K key, V value) throws Exception
Inserts a value for the given key into the map view. If the map view already contains a value for the key, the existing value is overwritten.- Parameters:
key
- The key for which the value is inserted.value
- The value that is inserted for the key.- Throws:
Exception
- Thrown if the system cannot put data.
-
putAll
public void putAll(Map<K,V> map) throws Exception
Inserts all mappings from the specified map to this map view.- Parameters:
map
- The map whose entries are inserted into this map view.- Throws:
Exception
- Thrown if the system cannot access the map.
-
remove
public void remove(K key) throws Exception
Deletes the value for the given key.- Parameters:
key
- The key for which the value is deleted.- Throws:
Exception
- Thrown if the system cannot access the map.
-
contains
public boolean contains(K key) throws Exception
Checks if the map view contains a value for a given key.- Parameters:
key
- The key to check.- Returns:
- True if there exists a value for the given key, false otherwise.
- Throws:
Exception
- Thrown if the system cannot access the map.
-
entries
public Iterable<Map.Entry<K,V>> entries() throws Exception
Returns all entries of the map view.- Returns:
- An iterable of all the key-value pairs in the map view.
- Throws:
Exception
- Thrown if the system cannot access the map.
-
keys
public Iterable<K> keys() throws Exception
Returns all the keys in the map view.- Returns:
- An iterable of all the keys in the map.
- Throws:
Exception
- Thrown if the system cannot access the map.
-
values
public Iterable<V> values() throws Exception
Returns all the values in the map view.- Returns:
- An iterable of all the values in the map.
- Throws:
Exception
- Thrown if the system cannot access the map.
-
iterator
public Iterator<Map.Entry<K,V>> iterator() throws Exception
Returns an iterator over all entries of the map view.- Returns:
- An iterator over all the mappings in the map.
- Throws:
Exception
- Thrown if the system cannot access the map.
-
isEmpty
public boolean isEmpty() throws Exception
Returns true if the map view contains no key-value mappings, otherwise false.- Returns:
- True if the map view contains no key-value mappings, otherwise false.
- Throws:
Exception
- Thrown if the system cannot access the state.
-
clear
public void clear()
Removes all entries of this map.
-
-