@Internal public class StringSerializer extends TypeSerializerSingleton<String>
We create the StringSerializer instead of using the StringSerializer of flink-core module because the StringSerializer of flink-core module serialize every Char of String in serialize method and deserialize the Char to build the String. We want to convert String to UTF-8 bytes to serialize which is compatible with BinaryStringSerializer in blink.
So we create this StringSerializer (only used in Java and Python data communication in udf).
StringSerializer for String.
Modifier and Type | Class and Description |
---|---|
static class |
StringSerializer.StringSerializerSnapshot
Serializer configuration snapshot for compatibility and format evolution.
|
Modifier and Type | Field and Description |
---|---|
static StringSerializer |
INSTANCE |
Constructor and Description |
---|
StringSerializer() |
Modifier and Type | Method and Description |
---|---|
void |
copy(DataInputView source,
DataOutputView target)
Copies exactly one record from the source input view to the target output view.
|
String |
copy(String from)
Creates a deep copy of the given element in a new element.
|
String |
copy(String from,
String reuse)
Creates a copy from the given element.
|
String |
createInstance()
Creates a new instance of the data type.
|
String |
deserialize(DataInputView source)
De-serializes a record from the given source input view.
|
String |
deserialize(String reuse,
DataInputView source)
De-serializes a record from the given source input view into the given reuse record instance if mutable.
|
int |
getLength()
Gets the length of the data type, if it is a fix length data type.
|
boolean |
isImmutableType()
Gets whether the type is an immutable type.
|
void |
serialize(String record,
DataOutputView target)
Serializes the given record to the given target output view.
|
TypeSerializerSnapshot<String> |
snapshotConfiguration()
Snapshots the configuration of this TypeSerializer.
|
duplicate, equals, hashCode
public static final StringSerializer INSTANCE
public boolean isImmutableType()
TypeSerializer
isImmutableType
in class TypeSerializer<String>
public String createInstance()
TypeSerializer
createInstance
in class TypeSerializer<String>
public String copy(String from)
TypeSerializer
copy
in class TypeSerializer<String>
from
- The element reuse be copied.public String copy(String from, String reuse)
TypeSerializer
copy
in class TypeSerializer<String>
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<String>
-1
for variable length data types.public void serialize(String record, DataOutputView target) throws IOException
TypeSerializer
serialize
in class TypeSerializer<String>
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 String deserialize(DataInputView source) throws IOException
TypeSerializer
deserialize
in class TypeSerializer<String>
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 String deserialize(String reuse, DataInputView source) throws IOException
TypeSerializer
deserialize
in class TypeSerializer<String>
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<String>
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 TypeSerializerSnapshot<String> 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<String>
null
).TypeSerializerSnapshot.resolveSchemaCompatibility(TypeSerializer)
Copyright © 2014–2020 The Apache Software Foundation. All rights reserved.