K
- The type of the keys in the map.V
- The type of the values in the map.@Internal @Deprecated public class MapViewSerializer<K,V> extends TypeSerializer<MapView<K,V>> implements LegacySerializerSnapshotTransformer<MapView<K,V>>
MapView
. The serializer relies on a key serializer and a value
serializer for the serialization of the map's key-value pairs.
The serialization format for the map is as follows: four bytes for the length of the map, followed by the serialized representation of each key-value pair. To allow null values, each value is prefixed by a null marker.
Constructor and Description |
---|
MapViewSerializer(TypeSerializer<Map<K,V>> mapSerializer)
Deprecated.
|
Modifier and Type | Method and Description |
---|---|
void |
copy(DataInputView source,
DataOutputView target)
Deprecated.
Copies exactly one record from the source input view to the target output view.
|
MapView<K,V> |
copy(MapView<K,V> from)
Deprecated.
Creates a deep copy of the given element in a new element.
|
MapView<K,V> |
copy(MapView<K,V> from,
MapView<K,V> reuse)
Deprecated.
Creates a copy from the given element.
|
MapView<K,V> |
createInstance()
Deprecated.
Creates a new instance of the data type.
|
MapView<K,V> |
deserialize(DataInputView source)
Deprecated.
De-serializes a record from the given source input view.
|
MapView<K,V> |
deserialize(MapView<K,V> reuse,
DataInputView source)
Deprecated.
De-serializes a record from the given source input view into the given reuse record instance
if mutable.
|
TypeSerializer<MapView<K,V>> |
duplicate()
Deprecated.
Creates a deep copy of this serializer if it is necessary, i.e. if it is stateful.
|
boolean |
equals(Object obj)
Deprecated.
|
int |
getLength()
Deprecated.
Gets the length of the data type, if it is a fix length data type.
|
TypeSerializer<Map<K,V>> |
getMapSerializer()
Deprecated.
|
int |
hashCode()
Deprecated.
|
boolean |
isImmutableType()
Deprecated.
Gets whether the type is an immutable type.
|
void |
serialize(MapView<K,V> record,
DataOutputView target)
Deprecated.
Serializes the given record to the given target output view.
|
TypeSerializerSnapshot<MapView<K,V>> |
snapshotConfiguration()
Deprecated.
Snapshots the configuration of this TypeSerializer.
|
<U> TypeSerializerSnapshot<MapView<K,V>> |
transformLegacySerializerSnapshot(TypeSerializerSnapshot<U> legacySnapshot)
Deprecated.
We need to override this as a
LegacySerializerSnapshotTransformer because in Flink
1.6.x and below, this serializer was incorrectly returning directly the snapshot of the
nested map serializer as its own snapshot. |
public MapViewSerializer(TypeSerializer<Map<K,V>> mapSerializer)
public boolean isImmutableType()
TypeSerializer
isImmutableType
in class TypeSerializer<MapView<K,V>>
public TypeSerializer<MapView<K,V>> duplicate()
TypeSerializer
We need this because Serializers might be used in several threads. Stateless serializers are inherently thread-safe while stateful serializers might not be thread-safe.
duplicate
in class TypeSerializer<MapView<K,V>>
public MapView<K,V> createInstance()
TypeSerializer
createInstance
in class TypeSerializer<MapView<K,V>>
public MapView<K,V> copy(MapView<K,V> from)
TypeSerializer
copy
in class TypeSerializer<MapView<K,V>>
from
- The element reuse be copied.public MapView<K,V> copy(MapView<K,V> from, MapView<K,V> reuse)
TypeSerializer
copy
in class TypeSerializer<MapView<K,V>>
from
- The element to be copied.reuse
- The element to be reused. May or may not be used.public int getLength()
TypeSerializer
getLength
in class TypeSerializer<MapView<K,V>>
-1
for variable length data types.public void serialize(MapView<K,V> record, DataOutputView target) throws IOException
TypeSerializer
serialize
in class TypeSerializer<MapView<K,V>>
record
- The record to serialize.target
- The output view to write the serialized data to.IOException
- Thrown, if the serialization encountered an I/O related error. Typically
raised by the output view, which may have an underlying I/O channel to which it
delegates.public MapView<K,V> deserialize(DataInputView source) throws IOException
TypeSerializer
deserialize
in class TypeSerializer<MapView<K,V>>
source
- The input view from which to read the data.IOException
- Thrown, if the de-serialization encountered an I/O related error.
Typically raised by the input view, which may have an underlying I/O channel from which
it reads.public MapView<K,V> deserialize(MapView<K,V> reuse, DataInputView source) throws IOException
TypeSerializer
deserialize
in class TypeSerializer<MapView<K,V>>
reuse
- The record instance into which to de-serialize the data.source
- The input view from which to read the data.IOException
- Thrown, if the de-serialization encountered an I/O related error.
Typically raised by the input view, which may have an underlying I/O channel from which
it reads.public void copy(DataInputView source, DataOutputView target) throws IOException
TypeSerializer
target.write(source, 8);
.copy
in class TypeSerializer<MapView<K,V>>
source
- The input view from which to read the record.target
- The target output view to which to write the record.IOException
- Thrown if any of the two views raises an exception.public boolean equals(Object obj)
equals
in class TypeSerializer<MapView<K,V>>
public int hashCode()
hashCode
in class TypeSerializer<MapView<K,V>>
public TypeSerializerSnapshot<MapView<K,V>> snapshotConfiguration()
TypeSerializer
The snapshot of the TypeSerializer is supposed to contain all information that affects the serialization format of the serializer. The snapshot serves two purposes: First, to reproduce the serializer when the checkpoint/savepoint is restored, and second, to check whether the serialization format is compatible with the serializer used in the restored program.
IMPORTANT: TypeSerializerSnapshots changed after Flink 1.6. Serializers implemented against Flink versions up to 1.6 should still work, but adjust to new model to enable state evolution and be future-proof. See the class-level comments, section "Upgrading TypeSerializers to the new TypeSerializerSnapshot model" for details.
snapshotConfiguration
in class TypeSerializer<MapView<K,V>>
null
).TypeSerializerSnapshot.resolveSchemaCompatibility(TypeSerializerSnapshot)
public <U> TypeSerializerSnapshot<MapView<K,V>> transformLegacySerializerSnapshot(TypeSerializerSnapshot<U> legacySnapshot)
LegacySerializerSnapshotTransformer
because in Flink
1.6.x and below, this serializer was incorrectly returning directly the snapshot of the
nested map serializer as its own snapshot.
This method transforms the incorrect map serializer snapshot to be a proper MapViewSerializerSnapshot
.
transformLegacySerializerSnapshot
in interface LegacySerializerSnapshotTransformer<MapView<K,V>>
U
- the legacy snapshot's serializer data type.legacySnapshot
- the snapshot to transform.public TypeSerializer<Map<K,V>> getMapSerializer()
Copyright © 2014–2024 The Apache Software Foundation. All rights reserved.