Class TupleSerializer<T extends Tuple>
- java.lang.Object
-
- org.apache.flink.api.common.typeutils.TypeSerializer<T>
-
- org.apache.flink.api.java.typeutils.runtime.TupleSerializerBase<T>
-
- org.apache.flink.api.java.typeutils.runtime.TupleSerializer<T>
-
- All Implemented Interfaces:
Serializable
- Direct Known Subclasses:
Tuple0Serializer
@Internal public class TupleSerializer<T extends Tuple> extends TupleSerializerBase<T>
- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from class org.apache.flink.api.java.typeutils.runtime.TupleSerializerBase
arity, fieldSerializers, tupleClass
-
-
Constructor Summary
Constructors Constructor Description TupleSerializer(Class<T> tupleClass, TypeSerializer<?>[] fieldSerializers)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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.TcreateInstance(Object[] fields)TcreateOrReuseInstance(Object[] fields, T reuse)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.TupleSerializer<T>duplicate()Creates a deep copy of this serializer if it is necessary, i.e.voidserialize(T value, DataOutputView target)Serializes the given record to the given target output view.TypeSerializerSnapshot<T>snapshotConfiguration()Snapshots the configuration of this TypeSerializer.-
Methods inherited from class org.apache.flink.api.java.typeutils.runtime.TupleSerializerBase
copy, equals, getArity, getFieldSerializers, getLength, getTupleClass, hashCode, isImmutableType
-
-
-
-
Constructor Detail
-
TupleSerializer
public TupleSerializer(Class<T> tupleClass, TypeSerializer<?>[] fieldSerializers)
-
-
Method Detail
-
duplicate
public TupleSerializer<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 extends Tuple>
-
createInstance
public T createInstance()
Description copied from class:TypeSerializerCreates a new instance of the data type.- Specified by:
createInstancein classTypeSerializer<T extends Tuple>- Returns:
- A new instance of the data type.
-
createInstance
public T createInstance(Object[] fields)
- Specified by:
createInstancein classTupleSerializerBase<T extends Tuple>
-
createOrReuseInstance
public T createOrReuseInstance(Object[] fields, T reuse)
- Specified by:
createOrReuseInstancein classTupleSerializerBase<T extends Tuple>
-
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 extends Tuple>- 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 extends Tuple>- 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.
-
serialize
public void serialize(T value, DataOutputView target) throws IOException
Description copied from class:TypeSerializerSerializes the given record to the given target output view.- Specified by:
serializein classTypeSerializer<T extends Tuple>- Parameters:
value- 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 extends Tuple>- 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 extends Tuple>- 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.
-
snapshotConfiguration
public TypeSerializerSnapshot<T> snapshotConfiguration()
Description copied from class:TypeSerializerSnapshots the configuration of this TypeSerializer. This method is only relevant if the serializer is used to state stored in checkpoints/savepoints.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.
- Specified by:
snapshotConfigurationin classTypeSerializer<T extends Tuple>- Returns:
- snapshot of the serializer's current configuration (cannot be
null). - See Also:
TypeSerializerSnapshot.resolveSchemaCompatibility(TypeSerializer)
-
-