Class PravegaTransactionalSink<T>

  • Type Parameters:
    T - The type of the event to be written.
    All Implemented Interfaces:
    java.io.Serializable, org.apache.flink.api.connector.sink2.Sink<T>, org.apache.flink.api.connector.sink2.TwoPhaseCommittingSink<T,​PravegaTransactionState>

    @Experimental
    public class PravegaTransactionalSink<T>
    extends PravegaSink<T>
    implements org.apache.flink.api.connector.sink2.TwoPhaseCommittingSink<T,​PravegaTransactionState>
    A Pravega sink for PravegaWriterMode.EXACTLY_ONCE writer mode.

    Use PravegaSinkBuilder to construct a PravegaTransactionalSink.

    PravegaTransactionalSink has two main components, PravegaTransactionalWriter and PravegaCommitter.

    The transactional writer will create a transaction on initialization and after each checkpoint. For every event, it will call Transaction.writeEvent(Type). Transaction.flush() will be called before next checkpoint to make sure all events are acknowledged by Pravega. Note it will not commit transactions and let PravegaCommitter to do this.

    The committer will use the transactions provided by the transactional writer and commit them. If there is an error during commit, it will log the error and throw the failed transaction away.

    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from interface org.apache.flink.api.connector.sink2.Sink

        org.apache.flink.api.connector.sink2.Sink.InitContext
      • Nested classes/interfaces inherited from interface org.apache.flink.api.connector.sink2.TwoPhaseCommittingSink

        org.apache.flink.api.connector.sink2.TwoPhaseCommittingSink.PrecommittingSinkWriter<InputT extends java.lang.Object,​CommT extends java.lang.Object>
    • Method Detail

      • createWriter

        public org.apache.flink.api.connector.sink2.TwoPhaseCommittingSink.PrecommittingSinkWriter<T,​PravegaTransactionState> createWriter​(org.apache.flink.api.connector.sink2.Sink.InitContext context)
                                                                                                                                          throws java.io.IOException
        Specified by:
        createWriter in interface org.apache.flink.api.connector.sink2.Sink<T>
        Specified by:
        createWriter in interface org.apache.flink.api.connector.sink2.TwoPhaseCommittingSink<T,​PravegaTransactionState>
        Throws:
        java.io.IOException
      • createCommitter

        public org.apache.flink.api.connector.sink2.Committer<PravegaTransactionState> createCommitter()
                                                                                                throws java.io.IOException
        Specified by:
        createCommitter in interface org.apache.flink.api.connector.sink2.TwoPhaseCommittingSink<T,​PravegaTransactionState>
        Throws:
        java.io.IOException
      • getCommittableSerializer

        public org.apache.flink.core.io.SimpleVersionedSerializer<PravegaTransactionState> getCommittableSerializer()
        Specified by:
        getCommittableSerializer in interface org.apache.flink.api.connector.sink2.TwoPhaseCommittingSink<T,​PravegaTransactionState>