@Experimental public class RowCoder extends CustomCoder<Row>
Coder.Context, Coder.NonDeterministicException
Modifier and Type | Method and Description |
---|---|
static <T> Coder<T> |
coderForPrimitiveType(Schema.TypeName typeName)
Returns the coder used for a given primitive type.
|
boolean |
consistentWithEquals()
|
Row |
decode(java.io.InputStream inStream)
Decodes a value of type
T from the given input stream in the given context. |
void |
encode(Row value,
java.io.OutputStream outStream)
Encodes the given value of type
T onto the given output stream. |
static long |
estimatedSizeBytes(Row row)
Return the estimated serialized size of a give row object.
|
Schema |
getSchema() |
static RowCoder |
of(Schema schema) |
void |
verifyDeterministic()
Throw
Coder.NonDeterministicException if the coding is not deterministic. |
getCoderArguments
decode, encode, getEncodedElementByteSize, getEncodedTypeDescriptor, isRegisterByteSizeObserverCheap, registerByteSizeObserver, structuralValue, verifyDeterministic, verifyDeterministic
public void encode(Row value, java.io.OutputStream outStream) throws java.io.IOException
Coder
T
onto the given output stream.encode
in class Coder<Row>
java.io.IOException
- if writing to the OutputStream
fails for some reasonCoderException
- if the value could not be encoded for some reasonpublic Row decode(java.io.InputStream inStream) throws java.io.IOException
Coder
T
from the given input stream in the given context. Returns the
decoded value.decode
in class Coder<Row>
java.io.IOException
- if reading from the InputStream
fails for some reasonCoderException
- if the value could not be decoded for some reasonpublic Schema getSchema()
public void verifyDeterministic() throws Coder.NonDeterministicException
CustomCoder
Coder.NonDeterministicException
if the coding is not deterministic.
In order for a Coder
to be considered deterministic, the following must be true:
Object.equals()
or Comparable.compareTo()
, if supported) have the same encoding.
Coder
always produces a canonical encoding, which is the same for an instance
of an object even if produced on different computers at different times.
verifyDeterministic
in class CustomCoder<Row>
Coder.NonDeterministicException
- if this coder is not deterministic.public boolean consistentWithEquals()
Coder
true
if this Coder
is injective with respect to Object.equals(java.lang.Object)
.
Whenever the encoded bytes of two values are equal, then the original values are equal
according to Objects.equals()
. Note that this is well-defined for null
.
This condition is most notably false for arrays. More generally, this condition is false
whenever equals()
compares object identity, rather than performing a
semantic/structural comparison.
By default, returns false.
consistentWithEquals
in class Coder<Row>
public static <T> Coder<T> coderForPrimitiveType(Schema.TypeName typeName)
public static long estimatedSizeBytes(Row row)