Class CompositeSerializer<T>
- java.lang.Object
-
- org.apache.flink.api.common.typeutils.TypeSerializer<T>
-
- org.apache.flink.api.common.typeutils.CompositeSerializer<T>
-
- Type Parameters:
T- type of custom serialized value
- All Implemented Interfaces:
Serializable
public abstract class CompositeSerializer<T> extends TypeSerializer<T>
Base class for composite serializers.This class serializes a composite type using array of its field serializers. Fields are indexed the same way as their serializers.
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classCompositeSerializer.PrecomputedParametersThis class holds composite serializer parameters which can be precomputed in advanced for better performance.
-
Field Summary
Fields Modifier and Type Field Description protected TypeSerializer<Object>[]fieldSerializersSerializers for fields which constitute T.
-
Constructor Summary
Constructors Modifier Constructor Description protectedCompositeSerializer(boolean immutableTargetType, TypeSerializer<?>... fieldSerializers)Can be used for user facing constructor.protectedCompositeSerializer(CompositeSerializer.PrecomputedParameters precomputed, TypeSerializer<?>... fieldSerializers)Can be used in createSerializerInstance for internal operations.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidcopy(DataInputView source, DataOutputView target)Copies exactly one record from the source input view to the target output view.Tcopy(T from)Creates a deep copy of the given element in a new element.Tcopy(T from, T reuse)Creates a copy from the given element.TcreateInstance()Creates a new instance of the data type.abstract TcreateInstance(Object... values)Create new instance from its fields.protected abstract CompositeSerializer<T>createSerializerInstance(CompositeSerializer.PrecomputedParameters precomputed, TypeSerializer<?>... originalSerializers)Factory for concrete serializer.Tdeserialize(DataInputView source)De-serializes a record from the given source input view.Tdeserialize(T reuse, DataInputView source)De-serializes a record from the given source input view into the given reuse record instance if mutable.CompositeSerializer<T>duplicate()Creates a deep copy of this serializer if it is necessary, i.e.booleanequals(Object obj)protected abstract ObjectgetField(T value, int index)Get field of existing instance.intgetLength()Gets the length of the data type, if it is a fix length data type.inthashCode()booleanisImmutableType()Gets whether the type is an immutable type.voidserialize(T record, DataOutputView target)Serializes the given record to the given target output view.protected abstract voidsetField(T value, int index, Object fieldValue)Modify field of existing instance.-
Methods inherited from class org.apache.flink.api.common.typeutils.TypeSerializer
snapshotConfiguration
-
-
-
-
Field Detail
-
fieldSerializers
protected final TypeSerializer<Object>[] fieldSerializers
Serializers for fields which constitute T.
-
-
Constructor Detail
-
CompositeSerializer
protected CompositeSerializer(boolean immutableTargetType, TypeSerializer<?>... fieldSerializers)Can be used for user facing constructor.
-
CompositeSerializer
protected CompositeSerializer(CompositeSerializer.PrecomputedParameters precomputed, TypeSerializer<?>... fieldSerializers)
Can be used in createSerializerInstance for internal operations.
-
-
Method Detail
-
createInstance
public abstract T createInstance(@Nonnull Object... values)
Create new instance from its fields.
-
setField
protected abstract void setField(@Nonnull T value, int index, Object fieldValue)
Modify field of existing instance. Supported only by mutable types.
-
getField
protected abstract Object getField(@Nonnull T value, int index)
Get field of existing instance.
-
createSerializerInstance
protected abstract CompositeSerializer<T> createSerializerInstance(CompositeSerializer.PrecomputedParameters precomputed, TypeSerializer<?>... originalSerializers)
Factory for concrete serializer.
-
duplicate
public CompositeSerializer<T> duplicate()
Description copied from class:TypeSerializerCreates a deep copy of this serializer if it is necessary, i.e. if it is stateful. This can return itself if the serializer is not stateful.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.
- Specified by:
duplicatein classTypeSerializer<T>
-
isImmutableType
public boolean isImmutableType()
Description copied from class:TypeSerializerGets whether the type is an immutable type.- Specified by:
isImmutableTypein classTypeSerializer<T>- Returns:
- True, if the type is immutable.
-
createInstance
public T createInstance()
Description copied from class:TypeSerializerCreates a new instance of the data type.- Specified by:
createInstancein classTypeSerializer<T>- Returns:
- A new instance of the data type.
-
copy
public T copy(T from)
Description copied from class:TypeSerializerCreates a deep copy of the given element in a new element.- Specified by:
copyin classTypeSerializer<T>- Parameters:
from- The element reuse be copied.- Returns:
- A deep copy of the element.
-
copy
public T copy(T from, T reuse)
Description copied from class:TypeSerializerCreates a copy from the given element. The method makes an attempt to store the copy in the given reuse element, if the type is mutable. This is, however, not guaranteed.- Specified by:
copyin classTypeSerializer<T>- Parameters:
from- The element to be copied.reuse- The element to be reused. May or may not be used.- Returns:
- A deep copy of the element.
-
getLength
public int getLength()
Description copied from class:TypeSerializerGets the length of the data type, if it is a fix length data type.- Specified by:
getLengthin classTypeSerializer<T>- Returns:
- The length of the data type, or
-1for variable length data types.
-
serialize
public void serialize(T record, DataOutputView target) throws IOException
Description copied from class:TypeSerializerSerializes the given record to the given target output view.- Specified by:
serializein classTypeSerializer<T>- Parameters:
record- The record to serialize.target- The output view to write the serialized data to.- Throws:
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.
-
deserialize
public T deserialize(DataInputView source) throws IOException
Description copied from class:TypeSerializerDe-serializes a record from the given source input view.- Specified by:
deserializein classTypeSerializer<T>- Parameters:
source- The input view from which to read the data.- Returns:
- The deserialized element.
- Throws:
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.
-
deserialize
public T deserialize(T reuse, DataInputView source) throws IOException
Description copied from class:TypeSerializerDe-serializes a record from the given source input view into the given reuse record instance if mutable.- Specified by:
deserializein classTypeSerializer<T>- Parameters:
reuse- The record instance into which to de-serialize the data.source- The input view from which to read the data.- Returns:
- The deserialized element.
- Throws:
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.
-
copy
public void copy(DataInputView source, DataOutputView target) throws IOException
Description copied from class:TypeSerializerCopies exactly one record from the source input view to the target output view. Whether this operation works on binary data or partially de-serializes the record to determine its length (such as for records of variable length) is up to the implementer. Binary copies are typically faster. A copy of a record containing two integer numbers (8 bytes total) is most efficiently implemented astarget.write(source, 8);.- Specified by:
copyin classTypeSerializer<T>- Parameters:
source- The input view from which to read the record.target- The target output view to which to write the record.- Throws:
IOException- Thrown if any of the two views raises an exception.
-
hashCode
public int hashCode()
- Specified by:
hashCodein classTypeSerializer<T>
-
equals
public boolean equals(Object obj)
- Specified by:
equalsin classTypeSerializer<T>
-
-