Class BinaryRowDataSerializer

    • Constructor Detail

      • BinaryRowDataSerializer

        public BinaryRowDataSerializer​(int numFields)
    • Method Detail

      • duplicate

        public TypeSerializer<BinaryRowData> duplicate()
        Description copied from class: TypeSerializer
        Creates 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:
        duplicate in class TypeSerializer<BinaryRowData>
      • copy

        public BinaryRowData copy​(BinaryRowData from,
                                  BinaryRowData reuse)
        Description copied from class: TypeSerializer
        Creates 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:
        copy in class TypeSerializer<BinaryRowData>
        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: TypeSerializer
        Gets the length of the data type, if it is a fix length data type.
        Specified by:
        getLength in class TypeSerializer<BinaryRowData>
        Returns:
        The length of the data type, or -1 for variable length data types.
      • serialize

        public void serialize​(BinaryRowData record,
                              DataOutputView target)
                       throws IOException
        Description copied from class: TypeSerializer
        Serializes the given record to the given target output view.
        Specified by:
        serialize in class TypeSerializer<BinaryRowData>
        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 BinaryRowData deserialize​(DataInputView source)
                                  throws IOException
        Description copied from class: TypeSerializer
        De-serializes a record from the given source input view.
        Specified by:
        deserialize in class TypeSerializer<BinaryRowData>
        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 BinaryRowData deserialize​(BinaryRowData reuse,
                                         DataInputView source)
                                  throws IOException
        Description copied from class: TypeSerializer
        De-serializes a record from the given source input view into the given reuse record instance if mutable.
        Specified by:
        deserialize in class TypeSerializer<BinaryRowData>
        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.
      • serializeToPages

        public int serializeToPages​(BinaryRowData record,
                                    AbstractPagedOutputView headerLessView)
                             throws IOException
        Description copied from class: PagedTypeSerializer
        Serializes the given record to the given target paged output view. Some implementations may skip some bytes if current page does not have enough space left, .e.g BinaryRowData.
        Specified by:
        serializeToPages in class PagedTypeSerializer<BinaryRowData>
        Parameters:
        record - The record to serialize.
        headerLessView - The output view to write the serialized data to.
        Returns:
        Returns the skipped number of bytes.
        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.
      • deserializeFromPages

        public BinaryRowData deserializeFromPages​(AbstractPagedInputView headerLessView)
                                           throws IOException
        Description copied from class: PagedTypeSerializer
        De-serializes a record from the given source paged input view. For consistency with serialize format, some implementations may need to skip some bytes of source before de-serializing, .e.g BinaryRowData. Typically, the content read from source should be copied out when de-serializing, and we are not expecting the underlying data from source is reused. If you have such requirement, see #mapFromPages(T, AbstractPagedInputView).
        Specified by:
        deserializeFromPages in class PagedTypeSerializer<BinaryRowData>
        Parameters:
        headerLessView - The input view from which to read the data.
        Returns:
        The de-serialized 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.
      • mapFromPages

        public BinaryRowData mapFromPages​(BinaryRowData reuse,
                                          AbstractPagedInputView headerLessView)
                                   throws IOException
        Description copied from class: PagedTypeSerializer
        Map a reused record from the given source paged input view. This method provides a possibility to achieve zero copy when de-serializing. You can either choose copy or not copy the content read from source, but we encourage to make it zero copy.

        If you choose the zero copy way, you have to deal with the lifecycle of the pages properly.

        Specified by:
        mapFromPages in class PagedTypeSerializer<BinaryRowData>
        Parameters:
        reuse - the reused record to be mapped
        headerLessView - The input view from which to read the data.
        Returns:
        The mapped record.
        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.
      • copyFromPagesToView

        public void copyFromPagesToView​(AbstractPagedInputView source,
                                        DataOutputView target)
                                 throws IOException
        Copy a binaryRow which stored in paged input view to output view.
        Parameters:
        source - source paged input view where the binary row stored
        target - the target output view.
        Throws:
        IOException
      • pointTo

        public void pointTo​(int length,
                            BinaryRowData reuse,
                            AbstractPagedInputView headerLessView)
                     throws IOException
        Point row to memory segments with offset(in the AbstractPagedInputView) and length.
        Parameters:
        length - row length.
        reuse - reuse BinaryRowData object.
        headerLessView - source memory segments container.
        Throws:
        IOException
      • getSerializedRowFixedPartLength

        public int getSerializedRowFixedPartLength()
        Return fixed part length to serialize one row.
      • getFixedLengthPartSize

        public int getFixedLengthPartSize()
      • copy

        public void copy​(DataInputView source,
                         DataOutputView target)
                  throws IOException
        Description copied from class: TypeSerializer
        Copies 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 as target.write(source, 8);.
        Specified by:
        copy in class TypeSerializer<BinaryRowData>
        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.
      • snapshotConfiguration

        public TypeSerializerSnapshot<BinaryRowData> snapshotConfiguration()
        Description copied from class: TypeSerializer
        Snapshots 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:
        snapshotConfiguration in class TypeSerializer<BinaryRowData>
        Returns:
        snapshot of the serializer's current configuration (cannot be null).
        See Also:
        TypeSerializerSnapshot.resolveSchemaCompatibility(TypeSerializerSnapshot)